今天在web环境下使用log4j2出现了一个错误找不到路径问题,log4j2配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN"> <!-- 这个status是控制系统信息的输出级别 -->
<Appenders>
<Console name="Console" target="SYSTEM_OUT"> <!-- 将日志信息从控制台输出 -->
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="File" charset="GBK" filename="${web:rootDir}/logs/info.log" append="true"> <!-- 将日志信息写入日志文件 -->
<PatternLayout pattern="%d %p %C{1.} [%t] %m%n"/>
</File>
</Appenders>
<Loggers>
<!-- Root level 是设置全局的信息显示级别,这里设置为error表示:error及以上的信息将被输出
信息的级别大小为:debug < info < warn < error < fatal -->
<Root level="trace">
<AppenderRef ref="Console"/> <!-- 仅有上述的Appenders配置还不够,这里还不能少,少了就不会在控制台输出 -->
<AppenderRef ref="File"/> <!-- 仅有上述的Appenders配置还不够,这里还不能少,少了就不会写入文件,但会创建文件 -->
</Root>
<!-- 可以专门为某个类指定信息级别,例如为main包下的Main类指定信息级别为trace -->
<!-- <Logger name="main.Main" level="trace" /> -->
</Loggers>
</Configuration>
注意filename=” {web:rootDir},使用它之后就会出现路径错误的信息经过摸索原来还需要在web.xml中配置,配置如下内容:
<!-- log4j -->
<context-param>
<param-name>isLog4jAutoInitializationDisabled</param-name>
<param-value>true</param-value>
</context-param>
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
context-param和listener标签顺序要注意一下,配置后问题解决。
还有一些更多log4j的配置我在这里贴一下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 设置log4j2的自身log级别为warn -->
<!-- OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<Configuration status="WARN">
<Appenders>
<!-- 控制台输出 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="RollingFileDebug" fileName="${web:rootDir}/logs/debug.log"
filePattern="${web:rootDir}/logs/$${date:yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<Filters>
<ThresholdFilter level="DEBUG"/>
<ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!--最多保留20个日志文件-->
<DefaultRolloverStrategy max="20" min="0" />
</RollingFile>
<RollingFile name="RollingFileInfo" fileName="${web:rootDir}/logs/info.log"
filePattern="${web:rootDir}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="INFO"/>
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!--最多保留20个日志文件-->
<DefaultRolloverStrategy max="20" min="0" />
</RollingFile>
<RollingFile name="RollingFileWarn" fileName="${web:rootDir}/logs/warn.log"
filePattern="${web:rootDir}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="WARN"/>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!--最多保留20个日志文件-->
<DefaultRolloverStrategy max="20" min="0" />
</RollingFile>
<RollingFile name="RollingFileError" fileName="${web:rootDir}/logs/error.log"
filePattern="${web:rootDir}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="ERROR"/>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!--最多保留20个日志文件-->
<DefaultRolloverStrategy max="20" min="0" />
</RollingFile>
<RollingFile name="RollingFileFatal" fileName="${web:rootDir}/logs/fatal.log"
filePattern="${web:rootDir}/logs/$${date:yyyy-MM}/fatal-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="FATAL"/>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!--最多保留20个日志文件-->
<DefaultRolloverStrategy max="20" min="0" />
</RollingFile>
</Appenders>
<Loggers>
<!--过滤掉simm.spring.restapi一些无用的DEBUG信息-->
<logger name="simm.spring.restapi" level="INFO"></logger>
<Root level="all">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFileDebug"/>
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
<appender-ref ref="RollingFileFatal"/>
</Root>
</Loggers>
</Configuration>