Log4j⽇志配置详解
1、log4j⽇志简介
Log4j由三个重要的组件构成:⽇志信息的优先级(Logger),⽇志信息的输出⽬的地(Appender),⽇志信息的输出格式(Layout)。
⽇志信息的级别分为四级,优先级从⾼到低有DEBUG、INFO、WARN、ERROR,⽤来指定这条⽇志信息的重要程度;
⽇志信息的输出⽬的地指定了⽇志将打印到控制台还是⽂件中;
⽇志信息的输出格式则控制了⽇志信息的显⽰内容
注意:Log4j⽇志级别是定义在org.apache.log4j.Level类中,可以看源码。Log4j只建议使⽤4个级别,优先级从⾼到低分别是
error,warn,info和debug。
A:off 最⾼等级,⽤于关闭所有⽇志记录。
B:fatal 指出每个严重的错误事件将会导致应⽤程序的退出。
C:error 指出虽然发⽣错误事件,但仍然不影响系统的继续运⾏。
D:warm 表明会出现潜在的错误情形。
E:info ⼀般和在粗粒度级别上,强调应⽤程序的运⾏全程。
F:debug ⼀般⽤于细粒度级别上,对调试应⽤程序⾮常有帮助。
G:TRACE ⼀般⽤于更细粒度级别上,⽐debug级别更低 H:
all 最低等级,⽤于打开所有⽇志记录。
2、log4j配置⽂件
log4j的配置⽂件分为两种, l 和 log4j.properties,推荐使⽤l。
2.1、 l 详解
注意:
<root>、<logger>和<category>的关系
logger是category的⼦类,category现在已经不提倡使⽤了。
logger和category中的additivity属性,additivity="false" 则表⽰在category中定义⽇志输在root中过滤掉
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration>
<!-- ========================== ⾃定义输出格式说明================================ -->
<!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->
<!-- %r 输出⾃应⽤启动到输出该log信息耗费的毫秒数 -->
<!-- %c 输出所属的类⽬,通常就是所在类的全名 -->
<!-- %t 输出产⽣该⽇志事件的线程名 -->
<!-- %n 输出⼀个回车换⾏符,Windows平台为“/r/n”,Unix平台为“/n” -->
<!-- %d 输出⽇志时间点的⽇期或时间,默认格式为ISO8601,也可以在其后指定格式,⽐如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10⽉18⽇ 22 <!-- %l 输出⽇志事件的发⽣位置,包括类⽬名、发⽣的线程,以及在代码中的⾏数。举例:Testlog4.main(TestLog4.java:10) -->
<!-- ========================================================================== -->
<!-- ========================== 输出⽅式说明================================ -->
<!-- Log4j提供的appender有以下⼏种: -->
<!-- org.apache.log4j.ConsoleAppender(控制台), -->
<!-- org.apache.log4j.FileAppender(⽂件), -->
<!-- org.apache.log4j.DailyRollingFileAppender(每天产⽣⼀个⽇志⽂件), -->
<!-- org.apache.log4j.RollingFileAppender(⽂件⼤⼩到达指定尺⼨的时候产⽣⼀个新的⽂件), -->
<!-- org.apache.log4j.WriterAppender(将⽇志信息以流格式发送到任意指定的地⽅) -->
<!-- ========================================================================== -->
<!--输出到控制台-->
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<!--Threshold是个全局的过滤器,他将把低于所设置的level的信息过滤不显⽰出来-->
<param name="Threshold" value="DEBUG" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy.MM.dd HH:mm:ss SS} %5p [%t] %C{1}.%M(%L) | %m%n" />
</layout>
</appender>
<!-- 系统应⽤级别⽇志,⽇志达到⼀定⼤⼩后,产⽣新的问题 -->
<appender name="fileMaxAppenderAll" class="org.apache.log4j.RollingFileAppender">
<param name="threshold" value="error" />
<param name="file" value="E:/logs/all.sys.log" />
<param name="maxFileSize" value="10M" />
<param name="maxBackupIndex" value="5" />
<!-- 设置是否在重新启动服务时,在原有⽇志的基础添加新⽇志 -->
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p][%d{yyyy-MM-dd HH:mm:ss,SSS}][%c] :%m%n" /> </layout>
</appender>
<!--输出到⽂件所有⽇志,根据name='DatePattern'设置每隔多久分割成⼀个新⽂件 -->
<appender name="fileAppenderAll" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="E:/logs/all.log" />
<!-- value的格式,(天,⼩时,分钟),控制每隔多久分割成⼀个新⽂件 -->
<param name="DatePattern" value=".yyyy-MM-dd-HH" />
<!-- 设置是否在重新启动服务时,在原有⽇志的基础添加新⽇志 -->
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy.MM.dd HH:mm:ss SS} %5p [%t] %C{1}.%M(%L) | %m%n" />
</layout>
</appender>
<!--输出到错误⽇志⽂件,只要加上filter过滤标签即可输出指定级别的⽇志 -->
<appender name="fileAppenderError" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="E:/logs/error.log" />
<param name="DatePattern" value=".yyyy-MM-dd-HH" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy.MM.dd HH:mm:ss SS} %5p [%t] %C{1}.%M(%L) | %m%n" />
</layout>
<!-- ⽇志级别,必须LevelMin <= LevelMax ,否则不输出⽇志 -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<!-- HTML形式的错误⽇志,<layout>标签中使⽤org.apache.log4j.HTMLLayout -->
<appender name="fileHTMLAppender" class="org.apache.log4j.RollingFileAppender">
<param name="threshold" value="error" />
<param name="file" value="E:/logs/all.log.html" />
<param name="maxFileSize" value="10M" />
<param name="maxBackupIndex" value="5" />
<param name="append" value="true" />
<layout class="org.apache.log4j.HTMLLayout" />
</appender>
<!-- XML形式错误⽇志 <layout>标签中使⽤org.l.XMLLayout -->
<appender name="fileXMLAppender" class="org.apache.log4j.RollingFileAppender">
<appender name="fileXMLAppender" class="org.apache.log4j.RollingFileAppender">
<param name="threshold" value="error" />
<param name="file" value="E:/logs/l" />
<param name="maxFileSize" value="10M" />
<param name="maxBackupIndex" value="5" />
<param name="append" value="true" />
<layout class="org.l.XMLLayout" />
</appender>
<!-- 邮件⽇志,添加发送和接收⽇志的邮箱地址 -->
<appender name="mailMAILAppender" class="org.apache.log4j.SMTPAppender">
<param name="threshold" value="debug" />
<param name="BufferSize" value="10" />
<param name="From" value="1076242265@163" />
<param name="SMTPHost" value="www.baidu" />
<param name="Subject" value="1076242265-log4j-Message" />
<param name="To" value="1076242265@163" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p][%d{yyyy-MM-dd HH:mm:ss,SSS}][%c] :%m%n" /> </layout>
</appender>
<!-- SOCKET⽇志 -->
<appender name="remoteSocketAppender" class="org.apache.log4j.SocketAppender">
<param name="threshold" value="fatal" />
<param name="remoteHost" value="localhost" />
<param name="port" value="18845" />
<param name="locationInfo" value="true" />
</appender>
<!-- 输出sql⽇志⽂件 -->
<appender name="fileSql" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="E:/logs/sql.log" />
<param name="DatePattern" value=".yyyy-MM-dd-HH" />
<param name="Append" value="true" />
param name<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy.MM.dd HH:mm:ss SS} %5p [%t] %C{1}.%M(%L) | %m%n" />
</layout>
<!-- ⽇志级别,必须LevelMin <= LevelMax ,否则不输出⽇志 -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<!-- 指定接⼝⽇志,接⼝1,name可以按接⼝名进⾏⾃定义命名 -->
<appender name="INTERFACE-METHOD-ONE" class="org.apache.log4j.DailyRollingFileAppender" >
<param name="DatePattern" value=".yyyy-MM-dd-HH" />
<param name="Append" value="true"/>
<param name="file" value="E:/logs/interfaceMethodOne.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy.MM.dd HH:mm:ss SS} %5p [%t] %C{1}.%M(%L) | %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<!-- 指定接⼝⽇志,接⼝2,name可以按接⼝名进⾏⾃定义命名 -->
<appender name="INTERFACE-METHOD-TWO" class="org.apache.log4j.DailyRollingFileAppender">
<param name="DatePattern" value=".yyyy-MM-dd-HH" />
<param name="Append" value="true"/>
<param name="Append" value="true"/>
<param name="file" value="E:/logs/interfaceMethodTwo.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy.MM.dd HH:mm:ss SS} %5p [%t] %C{1}.%M(%L) | %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<!-- 指定logger的设置,additivity指⽰是否叠加输出log,
如果是false,在INTERFACE-METHOD-ONE-PARTONE logger中⽇志不会被其它logger满⾜条件的logger(⽐如root)输出将名称为INTERFACE-METHOD-ONE-PARTONE的logger,输出到“interfaceMethodOne”的appender
category的属性additivity="false"表⽰在category中定义⽇志输在root中过滤掉
如果不想过滤掉,就设置为true
所谓logger的名字也就是,在定义Logger时,构造函数的参数
Logger log = Logger("INTERFACE-METHOD-ONE-PARTONE");
注意:<logger>和<category>的区别
logger是category的⼦类,category现在已经不提倡使⽤。
-->
<logger name="INTERFACE-METHOD-ONE-PARTONE" additivity="true">
<level class="org.apache.log4j.Level" value="DEBUG"/>
<!-- 指向上⾯定义的appender中的name,⽇志则会输出到指定⽂件中 -->
<appender-ref ref="INTERFACE-METHOD-ONE"/>
</logger>
<category name="INTERFACE-METHOD-TWO-PARTONE" additivity="true">
<appender-ref ref="INTERFACE-METHOD-TWO"/>
</category>
<!-- 打印sql⽂件 -->
<category name="com.yw.mapper" additivity="true">
<priority value="DEBUG" />
<appender-ref ref="fileSql" />
</category>
<!--
<category name="batis">
<priority value="DEBUG" />
<appender-ref ref="fileSql" />
</category>
<category name="batis.spring">
<priority value="DEBUG" />
<appender-ref ref="fileSql" />
</category>
-->
<root>
<priority value="INFO" />
<appender-ref ref="consoleAppender" />
<appender-ref ref="fileAppenderAll" />
<appender-ref ref="fileAppenderError" />
</root>
</log4j:configuration>
2.2、 log4j.properties 详解
>>>>##
>>>>##
## set log levels
>>>>##
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
apache=true
>>>>##
## CONSOLE Appender ##
>>>>##
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c] \:%m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n\u00A0
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE >>>>##
## Rolling File Appender
>>>>##
log4j.appender.FILEOUT=org.apache.log4j.RollingFileAppender
log4j.appender.FILEOUT.File=E:/logs/allError.log
#log4j.appender.FILEOUT.Threshold=ALL
log4j.appender.FILEOUT.Threshold=INFO
log4j.appender.FILEOUT.Append=true
log4j.appender.fileout.MaxFileSize=1000KB
#log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.FILEOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.FILEOUT.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c] \:%m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n\u00A0
>>>>###
### File Appender
>>>>###
#log4j.appender.FILE=org.apache.log4j.FileAppender
#log4j.appender.FILE.File=E:/logs/all.log
#log4j.appender.FILE.Append=true
#log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c] \:%m%n
##log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n\u00A0
>>>>#
## Socket Appender
>>>>#
#log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
#log4j.appender.SOCKET.RemoteHost=localhost
#log4j.appender.SOCKET.Port=5001
#log4j.appender.SOCKET.LocationInfo=true
## Set up for Log Facter 5
#log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
#log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]% >>>>>
## Log Factor 5 Appender
>>>>>
#log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
#log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
>>>>####
## SMTP Appender
>>>>####
#log4j.appender.MAIL=org.apache.log4j.SMTPAppender
#log4j.appender.MAIL.Threshold=FATAL
#log4j.appender.MAIL.BufferSize=10
#log4j.appender.MAIL.From=openwolfl@163
#log4j.appender.MAIL.SMTPHost=mail.openwolf
#log4j.appender.MAIL.Subject=Log4J Message
#log4j.appender.MAIL.To=openwolfl@163
#log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
#log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
>>>>>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
l文件配置详解以及实例说明
« 上一篇
推荐文章
热门文章
-
随机森林特征选择原理
2024-10-02 -
自动驾驶系统中的随机森林算法解析
2024-10-02 -
随机森林算法及其在生物信息学中的应用
2024-10-02 -
监督学习中的随机森林算法解析(六)
2024-10-02 -
随机森林算法在数据分析中的应用
2024-10-02 -
机器学习——随机森林,RandomForestClassifier参数含义详解
2024-10-02 -
随机森林 的算法
2024-10-02 -
随机森林算法作用
2024-10-02 -
监督学习中的随机森林算法解析(十)
2024-10-02 -
随机森林算法案例
2024-10-02 -
随机森林案例
2024-10-02 -
二分类问题常用的模型
2024-10-02 -
绘制ssd框架训练流程
2024-10-02 -
一种基于信息熵和DTW的多维时间序列相似性度量算法
2024-10-02 -
SVM训练过程范文
2024-10-02 -
如何使用支持向量机进行股票预测与交易分析
2024-10-02 -
二分类交叉熵损失函数binary
2024-10-02 -
tinybert_训练中文文本分类模型_概述说明
2024-10-02 -
基于门控可形变卷积和分层Transformer的图像修复模型及其应用
2024-10-02 -
人工智能开发技术的测试和评估方法
2024-10-02
最新文章
-
基于随机森林的数据分类算法改进
2024-10-02 -
人工智能中的智能识别与分类技术
2024-10-02 -
基于人工智能技术的随机森林算法在医疗数据挖掘中的应用
2024-10-02 -
随机森林回归模型的建模步骤
2024-10-02 -
r语言随机森林预测模型校准曲线
2024-10-02 -
《2024年随机森林算法优化研究》范文
2024-10-02
发表评论