Log4j2日志相对路径的配置
之前项目中日志的路径配置都是使用如下配置:
<File name="log" fileName="log/test.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File>
该配置的日志文档会存档当运行程序的顶层路径(如:C:或者D:),我需要配置相对路径到运行程序路径下的logs文件中。网上查了一下两个解决方法,大家给方法都是:http://blog.csdn.net/whoopee/article/details/851416 一样的,但是我用的是log4j2的非web项目,尝试了几次读取环境变量,不正确全是配置的字符串或赋值不正确。最后没有办法,只能查看官方文档,下面给出官方文档的变量取值表:
发现log4j2确实有自己读取变量的规则,简单介绍一下常用的几个 date -- 可以按照特定的格式插入当前日期/时间 env--可以读取系统的环境变量 jvmrunargs -- 可以读取jvm启动时设定的运行参数,但是不能读main函数的参数,在Android系统上也不能用 sys -- 读取的是 system properties的属性,基本上这几个参数就够用了。
现在说一下解决日志相对路径的配置解决方法, 可以在启动选项的的option.bat批文件中 set MYAPP_HOME = %~dp0 (设置当前目录为根目录),然后在log4j2.xml 文件中引用变量即可:
<File name="log" fileName="${env:MYAPP_HOME}/log/test.log" append="false"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File>
ok解决。