当前位置 博文首页 > 适己而忘人者,人之所弃;克己而立人者,众之所戴。:知识积累(

    适己而忘人者,人之所弃;克己而立人者,众之所戴。:知识积累(

    作者:[db:作者] 时间:2021-07-11 12:36

    Log4j主要有两种配置格式 log4j.properties和log4j.xml,默认是先找log4j.xml,找不到log4j.xml再去找log4j.properties的。当然前提是没有自己定义log4j.configuration。?

    一.log4j中有五级logger :
    ?? FATAL 0 ,ERROR 3 ,WARN 4 ,INFO 6 ,DEBUG 7

    二. 配置根Logger,其语法为:
    log4j.rootLogger = [ level ] , appenderName, appenderName, …

    其中:
    level:是日志记录的优先级。
    appenderName:就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。


    1.配置日志信息输出目的地Appender,其语法为:
    log4j.appender.appenderName = fully.qualified.name.of.appender.class
    log4j.appender.appenderName.option1 = value1
    ...
    log4j.appender.appenderName.option = valueN


    Log4j提供的appender有以下几种:
    org.apache.log4j.ConsoleAppender(输出到控制台),
    org.apache.log4j.FileAppender(输出到文件),
    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
    org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
    2.配置日志信息的格式(布局),其语法为:
    log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
    log4j.appender.appenderName.layout.option1 = value1
    ....
    log4j.appender.appenderName.layout.option = valueN
    Log4j提供的layout有以下4种:
    org.apache.log4j.HTMLLayout(以HTML表格形式布局),
    org.apache.log4j.PatternLayout(可以灵活地指定布局模式),其灵活性表现在:
    ??? #%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:10:28,921

    ??? #%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
    ??? 举例:Testlog4.main(TestLog4.java:10)

    ??? #%d {yyyy-MM-dd HH:mm:ss,SSS};

    ??? #%m 消息体

    ??? #%F 类名(*.java)

    ??? #%L 仅仅是发生的行号(如:18)
    org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
    org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

    自己参考其他网友的资料写的配置文件

    log4j.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

    <log4j:configuration debug="false">
    ?<appender name="FILE" class="org.apache.log4j.FileAppender">
    ??<param name="File" value="${webapp.root}/WEB-INF/log/system.log"/>
    ??<param name="Append" value="false"/>
    ??<param name="Threshold" value="info"/>
    ??<layout class="org.apache.log4j.PatternLayout">
    ???<param name="ConversionPattern" value="%d [%-5p] [%c{1}] - %m%n"/>
    ??</layout>
    ?</appender>
    ?<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
    ??<param name="Target" value="System.out"/>
    ??<param name="Threshold" value="info"/>
    ??<layout class="org.apache.log4j.PatternLayout">
    ???<param name="ConversionPattern" value="%d{ABSOLUTE} [%-5p] [%c{1}] %m%n"/>
    ??</layout>
    ?</appender>
    ?<appender name="DAILYFILE" class="org.apache.log4j.DailyRollingFileAppender">
    ??<param name="File" value="${webapp.root}/WEB-INF/log/daily_system.log"/>
    ??<param name="Append" value="true"/>
    ??<param name="Threshold" value="info"/>
    ??<param name="DatePattern" value="'.'yyyy-MM-dd"/>
    ??<layout class="org.apache.log4j.PatternLayout">
    ???<param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/>
    ??</layout>
    ?</appender>
    ?<appender name="DEBUG_FILE" class="org.apache.log4j.FileAppender">
    ??<param name="File" value="${webapp.root}/WEB-INF/log/debug.log"/>
    ??<param name="Append" value="false"/>
    ??<param name="Threshold" value="info" />
    ??<layout class="org.apache.log4j.PatternLayout">
    ???<param name="ConversionPattern" value="%d [%-5p] [%c{1}] - %m%n"/>
    ??</layout>
    ?</appender>
    ?<appender name="WARN_FILE" class="org.apache.log4j.FileAppender">
    ??<param name="File" value="${webapp.root}/WEB-INF/log/warning.log"/>
    ??<param name="Append" value="false"/>
    ??<param name="Threshold" value="warn" />
    ??<layout class="org.apache.log4j.PatternLayout">
    ???<param name="ConversionPattern" value="%d [%-5p] [%c{1}] - %m%n"/>
    ??</layout>
    ?</appender>
    ?<appender name="DEBUG_HTML" class="org.apache.log4j.FileAppender">
    ??<param name="File" value="${webapp.root}/WEB-INF/log/debug.html"/>
    ??<param name="Append" value="false"/>
    ??<param name="Threshold" value="info"/>
    ??<layout class="org.apache.log4j.HTMLLayout">
    ???<param name="Title" value="debug html log"/>
    ??</layout>
    ?</appender>
    ?<logger name="com.fullproject">
    ??<level value="debug"/>
    ??<appender-ref ref="DEBUG_FILE"/>
    ?</logger>
    ?<logger name="org.springframework">
    ??<level value="warn"/>
    ??<appender-ref ref="WARN_FILE"/>
    ?</logger>
    ?<logger name="org.hibernate">
    ??<level value="warn"/>
    ??<appender-ref ref="WARN_FILE"/>
    ?</logger>
    ?<root>
    ??<level value="info"/>
    ??<appender-ref ref="CONSOLE"/>
    ??<appender-ref ref="FILE"/>
    ??<appender-ref ref="DEBUG_HTML"/>
    ??<appender-ref ref="DAILYFILE"/>
    ?</root>
    </log4j:configuration>

    解释:

    xml格式的log4j配置文件需要使用org.apache.log4j.html.DOMConfigurator.configure()方法来
    读入.对xml文件的语法定义可以在log4j的发布包中找到:org/apache/log4j/xml/log4j.dtd.?
    Xml的一个配置文件:sample1.xml?
    说明:?
    ①xml配置文件的头部包括两个部分:xml声明和dtd声明.头部的格式如下:?
    ②log4j:configuration (root element)?
    xmlns:log4j [#FIXED attribute]: 定义log4j的名字空间,取定值"http://jakarta.apache.org/log4j/"?


    <param name="Append" value="false" />false表示重启程序之后,不会把日志添加到文件末尾,取而代之是清空原来日志,写入新的日志.true则是会把新日志添加到文件末尾

    <param name="Threshold" value="info" />表示这个appender只显示value以上级别的日志

    cs