log4j 读取系统环境变量

最近项目需要使用log4j记录日志,log4fj.properties配置文件的片段如下:

### log file ###
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.File=${PIF_CONF}/logs/retrofit.log
log4j.appender.debug.Append=true
log4j.appender.debug.Threshold=INFO
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n

${PIF_CONF}就配置在/etc/profile文件中,但是测试了几次,根本就没有生效,根据网友的解决方案也没有解决。

于是决定自己看log4j的源码org.apache.log4j.helpers.OptionConverter.java 文件,发现log4j 读取环境变量使用System.getProperty(),通过测试程序,发现System.getProperty("PIF_CONF") 为null,System.getenv("PIF_CONF") 确实获取到了PIF_CONF的内容。

所以在spring context 初始化的时候采用System.getenv("PIF_CONF") +System.setProperty("PIF_CONF","XXXX")将PIF_CONF设置进props。这样,log4j就可以读取到log path了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 10,516评论 1 13
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 10,446评论 0 6
  • 任何项目工程,日志的作用都毋庸置疑得重要,监控,问题查找,统计,大数据资源来源等。在阅读spring源码过程中开启...
    holly_wang_王小飞阅读 7,267评论 0 5
  • 这几天杭州保姆纵火案可谓刷屏,与之相关的文章和评论比比皆是。令我颇感惊讶的是,由此同一事件而产生的看法居然大相径庭...
    林上雪阅读 4,980评论 0 4

友情链接更多精彩内容