您的位置:首页 > 其它

log4j2 配置文件

2015-10-12 16:11 477 查看
首先pom文件如下
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion>
<groupId>com.javacodegeeks.snippets.enterprise</groupId>
<artifactId>log4jexample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>
</project>
然后是log4j2.xml文件
<?xmlversion="1.0"encoding="UTF-8"?>
<configurationstatus="OFF">
<appenders>
<Consolename="Console"target="SYSTEM_OUT">
<PatternLayoutpattern="%d{HH:mm:ss}[%t]%-5level%logger{36}-%msg%n"/>
</Console>

<Properties>
<Propertyname="log-path">D:/软件/workspaceForWeb/Test</Property>
</Properties>

<RollingFilename="WroxFileAppender"fileName="${log-path}/myexample.log"filePattern="${log-path}/myexample-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<pattern>%d{dd/MMM/yyyyHH:mm:ss,SSS}-%c{1}:%m%n</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicysize="1KB"/>
</Policies>
<DefaultRolloverStrategymax="4"/>
</RollingFile>

</appenders>

<Loggers>
<Rootlevel="trace">
<AppenderRefref="Console"/>
</Root>
<loggername="com.wrox"levels="info"additivity="false">
<appender-refref="RollingFile"/>
<appender-refref="Console">
<!--下变是个filter,说明了可以loggertoconsoleappender,butonlyforeventcontainingaMarkernamedEROX_CONSOLE-->
<MarkerFiltermarker="WORK_CONSOLE"onMathc="NEUTRAL"onMIsmath="DENY"/>
</appender-ref>
</logger>
<Loggername="yourLogger"level="debug"additivity="false">
<AppenderRefref="Console"/>
</Logger>
</Loggers>

</configuration>
需要说明几点:

0、首先注意configuration的status--loggingsystem本身的message,

记录日志系统本身的log,叫做StatusLogger,目的是logeventsoccurringwithinehloggingsystemitself,比如说你建立了一个socketAppender然后目的网路不可到达这个日志就记录再次,利用StatusLogger,默认设置是OFF,也就是suppressesalltheloggingsystemmessage。

1、首先在appender中配置rollthelog---RollingFile

rolllog发生的时机是

thelogreachingacertainsize;比如这里10mthedatachanging;thesupplicationstarting;3者中的任意组合

2、logger中的markerfiler:

下变是个filter,说明了可以loggertoconsoleappender,butonlyforeventcontainingaMarkernamedEROX_CONSOLE

3、注意日志格式:PatternLayout

%lprintstheclass,method,fileandlinenumberwheretheloggingmessageoccurred

4、关于logger继承关系

4.1、默认子logger是继承父亲的iftherootloggerisassignedtoaconsoleAppenderandcom.wroxisassignedtofileAppender,logmessageswrittentocom.wrox,com.wrox.chatandothersgotoboththeconsoleandthefile,whereaslogmessageswrittentorootorcom.example.testgoonlytotheconsole.4.2、可以关掉这个继承利用additivity,表示该节点以及子节点不会在继承该节点的的父亲节点了
<loggername="com.wrox"levels="info"additivity="false">
<appender-refref="WroxFileAppender"/>
<appender-refref="Console">
</appender-ref>
</logger>
注意属性additivity,表示是否继承父亲属性com.wrox的属性additivity=false,那么com.wrox,com.wrox.chat,andothersgoonlytothefile,表示父继承关闭了

4.3、如果

rootloggerconsoleappender&&(com.wrox的additivity=false&&分配给tofileAppender)&&(com.wrox.shop的属性additivity=true&&hasasyslogappender),那么消息writtentocom.wrox.shop会去syslogandthefile,不会到console5、关于java中使用privatestaticfinalLoggerlog=LogManager.getLogger();log.error("");


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: