• log4j配置简要说明


    Spring集成:

    web.xml中配置log4j

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>WEB-INF/log4j.xml</param-value>
    </context-param>
    
    <!-- 加载Spring框架中的log4j监听器Log4jConfigListener -->
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    pom.xml
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.13</version>
    </dependency>
    
    
    

    =================================================================================================

    log4j 基本概念

     
    Logger : 日志输出器,提供输出日志功能。
    Appender : 日志目的地,用来定义日志目的地对象。
    几种常见的Appender,前两种比较常用:
    ConsoleAppender: 控制台作为日志输出地
    DailyRollingFileAppender:每天产生一个日志文件
    FileAppender: 文件作为日志输出地
    RollingFileAppender: 日志文件的大小受到限制,当内容超出最大的限制时,该文件将向上滚动
    PatternLayout :日志布局,用于定义日志格式
     

    log4j.xml实际配置

    <!-- 控制台的日志记录 -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
     <param name="encoding" value="UTF-8" />
     <param name="target" value="System.out" />
     <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value="%d %-5p %c{2}(%L) - %m%n" />
     </layout>
    </appender>
    <!-- 默认 -->
    <!-- 输出到日志文件 每天一个日志  -->  
    <appender name="DEFAULT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
    <!-- 设置File参数:日志输出文件名 -->    
     <param name="file" value="/neworiental/web/log/common-default.log" />
    <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->  
     <param name="append" value="true" />
    <!-- 编码格式 -->    
     <param name="encoding" value="UTF-8" />
     <!-- 设置输出文件项目和格式 --> 
     <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value="%d %-5p %c{2} - %m%n" />
     </layout>
    </appender>
    
    
    <!-- error日志 -->
    <!-- 输出到日志文件 每天一个日志  -->  
    <appender name="ERROR-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
     <param name="file" value="/neworiental/web/log/common-error.log" />
     <param name="append" value="true" />
     <param name="encoding" value="UTF-8" />
    <!-- 日志级别 -->    
    
     <param name="threshold" value="error" />
     <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value="%d %-5p %c{2}(%L) - %m%n" />
     </layout>
    </appender>
    <!-- [公共Logger] 控制台STDOUT - STDOUT -->
    <logger name="STDOUT" additivity="false">
     <level value="INFO" />
     <appender-ref ref="console" />
     <appender-ref ref="goodhope-info" />
    </logger>
    
    
    
    
    <!-- 应用路径[Logger] 默认 -->
    <logger name="路径:要输出哪个文件下的日志" additivity="false">
     <appender-ref ref="console" />
     <appender-ref ref="DEFAULT-APPENDER" />
     <appender-ref ref="ERROR-APPENDER" />
    </logger>
    
    
    <root>
     <level value="info" />
     <appender-ref ref="console" />
     <appender-ref ref="DEFAULT-APPENDER" />
     <appender-ref ref="ERROR-APPENDER" />
    </root>

    例子:

    <?xml version="1.0" encoding="UTF-8"?>    
    <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
        <!-- 可以配置多个appender来对应不同的输出,如文件输出,sql输出,控制台输出,邮件输出等 -->
        <!-- [控制台STDOUT] 不同的输出类型对应着不同的calss,如控制台输出class对应着 org.apache.log4j.ConsoleAppender -->
        <appender name="console" class="org.apache.log4j.ConsoleAppender">  <!-- name提供给logger或者root调用 -->
            <param name="encoding" value="UTF-8" />  <!-- 保存字符集 -->
            <param name="target" value="System.out" />  <!-- 输出到控制台 -->
            <layout class="org.apache.log4j.PatternLayout"> <!-- loyout表示输出方式,可以多种,class值区分,PatternLayout表示自定义格式 -->
                <param name="ConversionPattern"
                    value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m]%n" />  <!-- 输出格式,后面解释 -->
            </layout>
            <!--filter过滤器设置输出的级别:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF 所有下面输出的是debug到warn不会有error和fatal -->
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="levelMin" value="debug" />
                <param name="levelMax" value="WARN" />
                <param name="AcceptOnMatch" value="true" />  <!-- 答案:http://bbs.csdn.net/topics/350195913 -->
            </filter>
        </appender>

        <!-- [公共Appender] 这个class表示输入到文件,并且按日期生成新文件 -->
        <appender name="DEFAULT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="File" value="${webapp.root}/logs/common-default.log" />  <!-- ${webapp.root}项目根路径,自动获得,不用配置,可自己在web.xml中配置 -->
            <param name="Append" value="true" />  <!-- 是否项目重启继续保存之前日志 -->
            <param name="encoding" value="GBK" />
            <param name="threshold" value="all" /> <!-- 记录所有类型日志,记录它和比它等级高的日志all<debug -->
            <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />  <!-- 日期格式 例子:common-default.log.2015-09-17.log -->
            <layout class="org.apache.log4j.PatternLayout">  <!-- 输出方式 -->
                <param name="ConversionPattern"
                    value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m]%n" />
            </layout>
        </appender>

        <!-- [debug日志APPENDER] -->
        <appender name="DEBUG-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="File" value="${webapp.root}/logs/controller/debug-log.log" />
            <param name="Append" value="true" />
            <param name="encoding" value="GBK" />
            <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern"
                    value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m]%n" />
            </layout>
        </appender>

        <!-- [info日志APPENDER] -->
        <appender name="INFO-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="File" value="${webapp.root}/logs/controller/info-log.log" />
            <param name="Append" value="false" />
            <param name="encoding" value="GBK" />
            <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern"
                    value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m]%n" />
            </layout>
            <!-- 我只想记录info日志,就做如下设置 -->
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMax" value="info" />
                <param name="LevelMin" value="info" />
            </filter>
        </appender>

        <!-- [组件日志APPENDER] -->
        <appender name="COMPONENT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="File" value="${webapp.root}/logs/logistics-component.log" />
            <param name="Append" value="true" />
            <param name="encoding" value="GBK" />
            <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern"
                    value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m]%n" />
            </layout>
        </appender>

        <!-- debug log -->
        <!-- name指定的是包名,表示这个logger只记录com.shop.test下的所有日志 -->
        <logger name="com.shop.test" additivity="true">  <!-- additivity 是否继承root -->
            <!-- <level value="${loggingLevel}" /> -->
            <level value="DEBUG"></level>  <!-- 现在级别 -->
            <appender-ref ref="DEBUG-APPENDER" />
        </logger>

        <!-- info log -->
        <!-- name指定的是包名,这样只操作此包下的log -->
        <logger name="com.shop.controller" additivity="true">
            <level value="INFO"></level>
            <appender-ref ref="INFO-APPENDER" />
            <appender-ref ref="console" />
        </logger>

        <!-- Root Logger -->
        <!-- 所有logger的父类,记录所有的日志。 -->
        <root>
            <level value="ALL"></level>  <!-- 限定记录等级 -->
            <appender-ref ref="DEFAULT-APPENDER" />  <!-- 调用记录方式 -->
            <appender-ref ref="console" />
        </root>
    </log4j:configuration>
    作者:逆舟
    https://www.cnblogs.com/zy-jiayou/
    本博客文章均为作者原创,转载请注明作者和原文链接。
  • 相关阅读:
    SDN课程阅读作业(2)
    2019 SDN上机第5次作业
    linux 最常用命令
    tomcat 部署 React 项目后,浏览器刷新报404问题
    Java8 ~ 特性
    React ~ 小结
    ES6 map与filter
    Idea 快捷键
    实现div可以调整高度(div实现resize)
    linux常用命令(4)
  • 原文地址:https://www.cnblogs.com/zy-jiayou/p/10021534.html
Copyright © 2020-2023  润新知