开发者社区 > 云原生 > 正文

当我使用${user_home}/logs/csp/${project.name}.properti

当我根据wiki文档使用${user_home}/logs/csp/${project.name}.properties配置文件的方式配置csp.sentinel.log.dir时,该配置不会生效。

首先,可以看到SentinelConfig这个class的源码,在类被加载后执行static代码块的时候,会执行com/alibaba/csp/sentinel/config/SentinelConfig.java:65处对,配置文件和jvm参数中的配置读取,并且设置进com.alibaba.csp.sentinel.config.SentinelConfig#props中,但是注意com/alibaba/csp/sentinel/config/SentinelConfig.java:109获取配置文件的fileName时,是调用com.alibaba.csp.sentinel.log.LogBase#getLogBaseDir获取配置文件的目录,而查看类LogBase在执行static代码块的时候,会执行com.alibaba.csp.sentinel.log.LogBase#init,其中com.alibaba.csp.sentinel.log.LogBase#logBaseDir的值只会使用两种方式得到:

String logDir = System.getProperty(LOG_DIR);

if (logDir == null || logDir.isEmpty()) { logDir = System.getProperty(USER_HOME); logDir = addSeparator(logDir) + DIR_NAME + File.separator; }

所以,该配置必然不会生效,所以,在com.alibaba.csp.sentinel.config.SentinelConfig#loadProps中直接调用LogBase.getLogBaseDir()获取log dir必然是有问题的。

如何操作的:

1、使用${user_home}/logs/csp/${project.name}.properties配置文件的方式配置csp.sentinel.log.dir

2、启动项目

3、观察日志输出目录,还是默认的${user_home}/logs/csp/

环境信息:最新master(2019-06-05)

原提问者GitHub用户threedr3am

展开
收起
码字王 2023-05-19 18:42:27 119 0
1 条回答
写回答
取消 提交回答
  • 目前 ${user_home}/logs/csp/${project.name}.properties 方式暂时不支持配置日志目录,可以先采用 JVM -D 参数形式配置。未来会增强 properties 文件方式配置的支持

    原回答者GitHub用户sczyh30

    2023-05-19 21:17:04
    赞同 展开评论 打赏
问答分类:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载