为了便于我们的移植,我们在启动Server的时候,通常会加入一个参数:-Dlog4j.home=XXX,然后在配置log4j的时候,可以使用相对路径,如:
然后,日志就会输入到我们想要的地方,或许因为是文档上介绍是这样介绍的,我们可能没有疑问。但是,我们换另外一种思路来想?如果没有添加这样启动参数,而直接调用会是什么样的结果?答案就是:启动的时候会报 XXX/XXX.log找不到类似错误。
尝试另外一种办法:如果定义相同名称的环境变量如何?答案仍然是相同的错误。我们在想,log4j是否没有提供环境变量的读取?找呀找呀,找到一篇文章介绍到,可以通过修改log4j的源码,以达到能够使用环境变量的目的。
于是,将看过的源代码进行修改:参照 修改 log4j 代码 以支持在 log4j.properties 设置环境变量
下面也将相应的代码列出来:(添加函数getEnvProperty)
同时在函数添加相应的调用:public static String substVars(String val, Properties props)
注意:下面代码的先后顺序,决定着启动参数与环境变量的先后顺序
这样就可以解决系统环境变量没有办法使用的问题,但是这里有两个问题可以思考一下:
1、getProperty与getenv 的区别?可以参考JAVA帮助手册 Oracle帮助文档
2、为什么log4j没有在代码中添加获取系统环境变量?其实也很显然,系统环境变更是针对当前主机的所有Server,而-Dlog4j.home只针对当前Server,符合编程的最小权限化。
附件为已编译好的OptionConverter.class,有使用的可以下载。
分享到:
相关推荐
解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log 其中“${WORKDIR}/”是个变量,会被System Property中的“WORKDIR...
Log4j中相对路径的问题,遇到这个问题的朋友可以看看该文档
本文档提供log4j配置相对路径三种方法:log4j.properties文件配置、xml文件配置和通过servlet初始化方式来配置,希望对大家有所帮助
关于log4j在ssh等框架中相对路径的配置
完全相对路径的log4j配置: 配置文件相对,及日志文件相对. 不过使用的是properties,总觉得用XML配置是好点的做法
解决log4j乱码 在log4j.properties配置文件中可以指定字符编码: 下面这行配置指定了两个appender: log4j.rootCategory=INFO,appender1的名字,appender2的名字 下面这两行配置将上一行的两个appender的字符...
log4j简单范例 日志文件是相对路径的。
针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...
描述Log4j2的配置详情及相对Log4j的优点,包括效率测试程序
apache-log4j-1.2.15.jar, apache-log4j-extras-1.0.jar, apache-log4j-extras-1.1.jar, apache-log4j.jar, log4j-1.2-api-2.0.2-javadoc.jar, log4j-1.2-api-2.0.2-sources.jar, log4j-1.2-api-2.0.2.jar, log4j-...
若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载
Log4j 是一个日志记录框架,Log4j 2 是对 Log4j 的升级,提供了重大改进,超越其前身 Log4j 1.x,并提供...Log4j 团队已获悉一个安全漏洞 CVE-2021-45105,该漏洞已在 Java 8 及更高版本的 Log4j 2.17.0 中得到解决。
Apache log4j2零日漏洞,根据 log4j-2.15.0-rc2 版本编译生成log4j-api-2.15.0.jar 1.解压你的jar jar xvf XXX.jar 2. 删除旧版本jar cd ./BOOT-INF/lib rm -rf log4j-api-*.jar 3. 上传新版本log4j-api-2.15.0....
提示:log4j:WARN Please initialize the log4j system properly,log4j:WARN No appenders could be found for logger错误的处理办法
Apache log4j2零日漏洞,根据 log4j-2.15.0-rc2 版本编译生成log4j-api-2.15.0.jar 1.解压你的jar jar xvf XXX.jar 2. 删除旧版本jar cd ./BOOT-INF/lib rm -rf log4j-api-*.jar 3. 上传新版本log4j-api-...
Eclipse调试方法及log4j调试方法Eclipse调试方法及log4j调试方法
下面小编就为大家带来老生常谈Log4j和Log4j2的区别(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
log4j.rootLogger=debug,CONSOLE,testfile,A1,MAIL ################### # Console Appender ################### log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target=...
tomcat6.0 配log4j日志的必须文件及配置过程 tomcat6-------lib | |--------tomcat-juli-adapters.jar | |--------log4j.jar | |--------log4j.properites | |----bin |--------tomcat-juli.jar 最后把log4...
log4j-api-2.12.4.jar和log4j-core-2.12.4.jar,该版本避免log4j漏洞问题。