Java logback配置

日誌級別基礎 等級從高到低(並不是全部log實現都有以下級別): OFF、 FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALLexpress

參考:app

http://aub.iteye.com/blog/1101222框架

一、簡介 LOGBack,一個「可靠、通用、快速而又靈活的Java日誌框架」。async

二、部署使用工具

在工程src目錄下創建logback.xml 注: 1.logback首先會試着查找logback.groovy文件; 2.當沒有找到時,繼續試着查找logback-test.xml文件; 3.當沒有找到時,繼續試着查找logback.xml文件; 4.若是仍然沒有找到,則使用默認配置(打印到控制檯)。性能

三、示例lua

<?xml version="1.0" encoding="UTF-8"?>

<!--
    configuration:
        scan:true設置加載配置,false不加載,defulat:true
        scanPeriod:掃描時間,默認1分鐘
        debug:是否打印logback內部日誌
 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!--
    property:屬性名稱 k-v格式
    contextName:每一個logger都關聯到logger上下文
    timestamp:時間戳,datePattern 格式
    -->
    <property name="APP_NAME" value="walter" />
    <contextName>${APP_NAME}</contextName>
    <timestamp key="time" datePattern="yyyyMMdd'T'HHmmss"/>
    <property name="LOG_HOME" value="F:/project/logback" />

    <!--
        配置開啓 JMXConfigurator,經過jconsle等工具能夠查看配置
    -->
    <jmxConfigurator />

    <!--
    appender: name-引用名稱,class-類名 ch.qos.logback.core。*
        ConsoleAppender:控制檯
        FileAppender:文件
        RollingFileAppender:滾動

            rollingPolicy:滾動策略,TimeBasedRollingPolicy-最經常使用按照時間
            maxHistory:控制保留的歸檔文件的最大數量
            timeBasedFileNamingAndTriggeringPolicy:maxFileSize最大文件
        filter:ThresholdFilter:臨界值過濾器,指定級別level
                EvaluatorFilter:求值過濾器,如實例-過濾不含「billing」的日誌
                            <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
                              <evaluator>
                                    <expression>return message.contains("billing");</expression>
                              </evaluator>
                              <OnMatch>ACCEPT</OnMatch>
                              <OnMismatch>DENY</OnMismatch>
                            </filter>
    -->
    <appender name="error_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/error_%d{yyyy-MM-dd}_%i.log.zip
            </fileNamePattern>
            <maxHistory>7</maxHistory>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>300MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <file>${LOG_HOME}/error.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%date [%thread] [%file:%line] [%level %logger{0}] - %msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name="warn_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/warn_%d{yyyy-MM-dd}_%i.log.zip
            </fileNamePattern>
            <maxHistory>7</maxHistory>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>300MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <file>${LOG_HOME}/warn.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%date [%thread] [%file:%line] [%level %logger{0}] - %msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name="info_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/info_%d{yyyy-MM-dd}_%i.log.zip
            </fileNamePattern>
            <maxHistory>7</maxHistory>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>300MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <file>${LOG_HOME}/info.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%date [%thread] [%file:%line] [%level %logger{0}] - %msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name ="info_async_file" class= "ch.qos.logback.classic.AsyncAppender">
        <!-- 不丟失日誌.默認的,若是隊列的80%已滿,則會丟棄TRACT、DEBUG、INFO級別的日誌 -->
        <discardingThreshold >12</discardingThreshold>
        <!-- 更改默認的隊列的深度,該值會影響性能.默認值爲256 -->
        <queueSize>1024</queueSize>
        <includeCallerData>false</includeCallerData>
        <!-- 添加附加的appender,最多隻能添加一個 -->
        <appender-ref ref ="info_file"/>
    </appender>

    <appender name ="warn_async_file" class= "ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold >12</discardingThreshold>
        <queueSize>1024</queueSize>
        <includeCallerData>false</includeCallerData>
        <appender-ref ref ="warn_file"/>
    </appender>

    <appender name ="error_async_file" class= "ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold >12</discardingThreshold>
        <queueSize>1024</queueSize>
        <includeCallerData>false</includeCallerData>
        <appender-ref ref ="error_file"/>
    </appender>

    <appender name="special_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/special_%d{yyyy-MM-dd}_%i.log.zip
            </fileNamePattern>
            <maxHistory>7</maxHistory>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>300MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <file>${LOG_HOME}/special.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%date [%thread] [%file:%line] [%level %logger{0}] - %msg%n
            </pattern>
        </encoder>
    </appender>

     <!--
       logger:特定包或類日誌打印,能夠包含零個或多個<appender-ref>元素
           name:特定包或類名稱
           level:日誌級別
           additivity: 是否向上級loger傳遞打印信息。默認是true
    -->
    <logger name="com.ent.yy.logback.SpecialLog" level="info" additivity="false">
        <appender-ref ref="special_file" />
    </logger>

    <!--
      root:根logger,logger的一種,能夠包含零個或多個<appender-ref>元素
       level:日誌級別 默認是DEBUG
    -->
    <root level="info">
        <appender-ref ref="info_async_file"  />
        <appender-ref ref="warn_async_file" />
        <appender-ref ref="error_async_file" />
    </root>

</configuration>
相關文章
相關標籤/搜索