在log4j1.x版本如果想获取如下的JVM启动参数
Dlog.path.prefix=/export/home/tomcat/logs/apps/myApp -Ddeploy.project.id=2856 -Ddeploy.app.id=370 -Ddeploy.app.name=myApp
其中log.path.prefix是需要配置在log4j日志路径中的,在1.x版本可以使用${log.path.prefix}来获取如下:
log4j.appender.file.File=${log.path.prefix}/my_log.log
但是在log4j2.x版本中这样是获取不到路径的,正确的方法是:
<property name="LOG_HOME">${sys:log.path.prefix}</property>
完整的线上的log4j2.xml配置如下,可参考:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN">
<properties>
<!-- 日志路径 -->
<property name="LOG_HOME">${sys:log.path.prefix}</property>
<!-- INFO级别日志名称 -->
<property name="LOG_INFO_NAME">/app_log.log</property>
<!-- INFO级别备份日志名称 -->
<property name="BACKUP_INFO_NAME">app-%d{MM-dd-yyyy}-%i.log</property></span>
<!-- ERROR级别日志名称 -->
<property name="LOG_ERROR_NAME">/err.log</property>
<!-- ERROR级别备份日志名称-->
<property name="BACKUP_ERROR_NAME">app-err-%d{MM-dd-yyyy}-%i.log</property>
</properties>
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="[%p][%date{yyyy-MM-dd HH:mm:ss.SSS}]%msg[%thread]([%c:%line])%n"/>
</Console>
<RollingFile name="AllLog" fileName="${LOG_HOME}/${LOG_INFO_NAME}"
filePattern="${LOG_HOME}/${BACKUP_INFO_NAME}">
<PatternLayout pattern="[%p][%date{yyyy-MM-dd HH:mm:ss.SSS}]%msg[%thread]([%c:%line])%n"/>
<SizeBasedTriggeringPolicy size="50MB"/>
</RollingFile>
<RollingFile name="ErrLog" fileName="${LOG_HOME}/${LOG_ERROR_NAME}"
filePattern="${LOG_HOME}/${BACKUP_ERROR_NAME}">
<Filters>
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="[%p][%date{yyyy-MM-dd HH:mm:ss.SSS}]%msg[%thread]([%c:%line])%n"/>
<SizeBasedTriggeringPolicy size="50MB"/>
</RollingFile>
</appenders>
<Loggers>
<logger name="java.sql" level="ERROR" additivity="false"/>
<logger name="java.sql.ResultSet" level="ERROR" additivity="false"/>
<logger name="com.ibatis" level="ERROR" additivity="false"/>
<logger name="org.apache" level="ERROR" additivity="false"/>
<logger name="org.apache.ibatis" level="ERROR" additivity="false"/>
<logger name="org.springframework" level="ERROR" additivity="false"/>
<logger name="com.mchange" level="ERROR" additivity="false"/>
<logger name="org.apache.commons" level="ERROR" additivity="false"/>
<root level="info">
<appenderRef ref="AllLog"/>
<appenderRef ref="ErrLog"/>
</root>
</Loggers>
</configuration>
关于各种路径的获取方式,详情参考官方文档: