当我根据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
目前 ${user_home}/logs/csp/${project.name}.properties 方式暂时不支持配置日志目录,可以先采用 JVM -D 参数形式配置。未来会增强 properties 文件方式配置的支持
原回答者GitHub用户sczyh30
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。