前言:log4j 的基本配置就介绍了,在这里只讲实际中使用.根据配置文件解释问题
1.使用配置文件log4j.xml 配置日志信息:
log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">
<!--配置日志输出目的地,及输出形式-->
<appender name="xmlbusservlet" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="d:/xmlbusservlet.log" />
<param name="MaxBackupIndex" value="5" />
<param name="Append" value="true" />
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %c %m%n" />
</layout>
</appender>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p: %m%n" />
</layout>
</appender>
<!--针对项目具体的类进行日志记录,前面的root为对项目所有用到log的类进行配置,而category 这个标签相当于精细化配置,给特定类,或者特定的包下配置日志,这样该类所有的日志信息就会输出到如下配置的目的地并且输出形式,也配置好了-->
<category name='"bus.core.chain.server.xml.XMLBusServlet">
<param name="additivity" value="false" /><!--配置不继承根日志,由于默认的都为继承根日志,
由于根日志已经配置了输出目的地,所以如果不配置则会重复输出-->
<priority value="DEBUG" /> <!--配置日记优先级别-->
<appender-ref ref="xmlbusservlet"/>
<appender-ref ref="console"/>
</category>
<root> <!-- 表示整个日志文件的根日志记录,如果没特别描述,项目中的所有用到log记录的都会继承这个 root -->
<level value="error" /> <!-- 根日志的输出级别,如果比error级别低,就不会输出-->
<appender-ref ref="xmlbusservlet"/> <!--根日志输出的目的地-->
<appender-ref ref="console"/> <!--根日志输出的目的地-->
注意:根日志记输出到两个目的地,一个为xmlbusservlet,另一个为:console
</root>
</log4j:configuration>
log4j.properties:
log4j.rootCategory=DEBUG, CONSOLE, LOGFILE (第一个参数表示,根日志的输出级别,后面的参数表示输出的目的地,这里表示根日志输出到两个目的地)
#log4j.rootCategory=INFO, CONSOLE, LOGFILE
log4j.appender.CONSOLE.Encoding=utf-8 (配置输出目的地的编码)
log4j.appender.LOGFILE.Encoding=utf-8
log4j.additivity.com.log4j.dao.UserDao=false(配置不继承根日志)
log4j.logger.com.log4j.dao.UserDao = DEBUG,XXG,XCON(精细化配置,配置具体类的日志信息)
log4j.appender.XXG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.XXG.File=d:/XXG.log
log4j.appender.XXG.Append=true
log4j.appender.XXG.Threshold=DEBUG
log4j.appender.XXG.layout=org.apache.log4j.PatternLayout
log4j.appender.XXG.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %c %m%n
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.XCON=org.apache.log4j.ConsoleAppender
log4j.appender.XCON.target=System.out
log4j.appender.XCON.Threshold=DEBUG
log4j.appender.XCON.layout=org.apache.log4j.PatternLayout
log4j.appender.XCON.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %c %m%n
总结:
xml配置文件:
--root(根日志,所有的l日志信息默认输入到这个root级别上)
---categroy (跟properties 中logger类似)
-- appender(输出目的地)
properties配置文件:
rootCategory:根日志类似xml的root
logger:类是xml的categroy
配置类的日志输出形式:
log4j.logger.com.log4j.dao.UserDao = DEBUG,XXG,XCON(精细化配置,配置具体类的日志信息)
(com.log4j.dao.UserDao 类的日志输出级别为:debug,日志输出 目的地为:XXG,XCON)
log4j.additivity.com.log4j.dao.UserDao=false(配置UserDao类的日志记录不继承根日志)
网上摘抄:
log4j.additivity 是 子Logger 是否继承父Logger 的 输出源(appender)的标志位。具体说,默认情况下,子Logger 会继承父Logger 的appender,也就是说 子Logger 会在父Logger 的appender里输出。若是additivity设为false,则子Logger 只会在自己的appender里输出,而不会在父Logger 的appender里输出。
No related posts.