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>
相关文章
相关标签/搜索