log4j2
支持 XML, JSON, YAML, properties四种格式的配置
官方的配置说明: [url]http://logging.apache.org/log4j/2.x/manual/layouts.html[/url]
我在这里只以xml格式为例记录一些平时不太注意的地方
1.properties的使用
2.将xml分成多个
比将logger和appender分成另两个文件
3.按日志级别显示不同颜色的日志(需要ANSI console支持,否则会出现奇怪的字符)
eclipse 用户可以在Eclipse Marketplace中搜索安装
然后将appender中的PatternLayout 修改
4.ThreadContext
日志太多特别是并发的情况下,不知道哪条日志是哪个用户的怎么办,ok,使用ThreadContext
(ThreadContext 可以将用户id等数据放入map或堆栈中,--推荐使用map方式)
可以把用户id,sessionid等放进ThreadContext中
然后在PatternLayout中加入 %X{user} %X{sessionid} 将其输出在日志当中
[color=red]
注意:使用ThreadContext需要把isThreadContextMapInheritable设成True
[/color]
原创:[url]http://yxjajl.iteye.com/blog/2321807[/url]
支持 XML, JSON, YAML, properties四种格式的配置
官方的配置说明: [url]http://logging.apache.org/log4j/2.x/manual/layouts.html[/url]
我在这里只以xml格式为例记录一些平时不太注意的地方
1.properties的使用
<properties>
<property name="LOG_HOME">D:/logs</property>
<property name="APP_NAME">MyApp</property>
<property name="isThreadContextMapInheritable">true</property>
</properties>
<RollingFile name="appAppender" fileName="${LOG_HOME}/${APP_NAME}.log" bufferSize="1024" immediateFlush="false"
filePattern="${LOG_HOME}/${APP_NAME}-%d{MM-dd-yyyy}-%i.log">
<PatternLayout charset="UTF-8" pattern="%d{yy-MM-dd HH:mm:ss} %p [%.8t] %c{1.}.%M(%L): %m%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
<DefaultRolloverStrategy max="30" />
<Filters>
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
</Filters>
</RollingFile>
2.将xml分成多个
比将logger和appender分成另两个文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns:xi="http://www.w3.org/2001/XInclude" status="WARN">
<properties>
<property name="LOG_HOME">D:/logs</property>
<property name="APP_NAME">MyApp</property>
<property name="isThreadContextMapInheritable">true</property>
</properties>
<xi:include href="log4j2-logger.xml" />
<xi:include href="log4j2-appender.xml" />
</Configuration>
3.按日志级别显示不同颜色的日志(需要ANSI console支持,否则会出现奇怪的字符)
eclipse 用户可以在Eclipse Marketplace中搜索安装
然后将appender中的PatternLayout 修改
<PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} [%.8t] %c.%M() - %msg%n}{FATAL=Bright Magenta, ERROR=bright red, WARN=yellow, INFO=black, DEBUG=green}" />
4.ThreadContext
日志太多特别是并发的情况下,不知道哪条日志是哪个用户的怎么办,ok,使用ThreadContext
(ThreadContext 可以将用户id等数据放入map或堆栈中,--推荐使用map方式)
可以把用户id,sessionid等放进ThreadContext中
ThreadContext.put("user", userID);
ThreadContext.put("sessionid", sessionID);
然后在PatternLayout中加入 %X{user} %X{sessionid} 将其输出在日志当中
[color=red]
注意:使用ThreadContext需要把isThreadContextMapInheritable设成True
[/color]
原创:[url]http://yxjajl.iteye.com/blog/2321807[/url]