文档章节

Java logback配置

caiz
 caiz
发布于 2016/06/12 17:53
字数 824
阅读 339
收藏 10

日志级别基础 等级从高到低(并非所有log实现都有如下级别): OFF、 FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL

参考:

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

1、简介 LOGBack,一个“可靠、通用、快速而又灵活的Java日志框架”。

2、部署使用

在工程src目录下建立logback.xml 注: 1.logback首先会试着查找logback.groovy文件; 2.当没有找到时,继续试着查找logback-test.xml文件; 3.当没有找到时,继续试着查找logback.xml文件; 4.如果仍然没有找到,则使用默认配置(打印到控制台)。

3、示例

<?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>

© 著作权归作者所有

上一篇: java wait 和 sleep
下一篇: JAVA原子性操作
caiz
粉丝 0
博文 25
码字总数 11583
作品 0
广州
私信 提问
log4j on sentry实践

1、sentry 2、log4j/logback on sentry 代码中集成Sentry 使用Maven: io.sentry sentry-logback 1.7.5 使用SBT: libraryDependencies += "io.sentry" % "sentry-logback" % "1.7.5" lo......

巧克力黒
2018/07/25
0
0
SpringBoot基础教程2-1-5 日志规范-logback配置详解

概述 日志会在 之前初始化, 为我们提供了 属性,方便我们配置自定义日志文件。默认情况它会根据日志的依赖自动加载。 Logging System Customization JDK logging.properties Log4j2 log4j2-...

Mkeeper
2018/07/15
0
0
聊聊flink的logback配置

序 本文主要研究一下flink的logback配置 client端pom文件配置 添加logback-core、logback-classic及log4j-over-slf4j依赖,之后对flink-java、flink-streaming-java2.11、flink-clients2.11...

go4it
02/14
0
0
投票 Logback 1.3 版本是否需要升级适配至 Java 8

Logback 1.3.0-alpha2 发布了。logback 是由 log4j、slf4j 的共同作者设计的又一个开源日志组件。目前作者在邮件列表上,发起了一个投票,询问 Logback 1.3 版本系列是否需要升级适配至 Java...

livem
2018/01/31
1K
15
logback MDC(Mapped Diagnostic Context)与分布式系统的跟踪系统

logback MDC(Mapped Diagnostic Context)与分布式系统的跟踪系统 logback官方文档中第8章Mapped Diagnostic Context给我们提供了一些分布式系统的跟踪系统实现的方法。 logback设计的一个目标...

Beaver_
2015/07/29
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

弹性盒模型常见例子

这篇文章主要是分享了三个例子( 垂直居中、响应式、圣杯 ),介绍了Flexbox的主要应用场景,并与传统方式对比, 感受Flexbox布局带来的便捷开发体验。 1 垂直居中对齐 不使用Flexbox <style>...

凌兮洛
30分钟前
0
0
Redis分布式锁服务

概述 在多线程环境下,通常会使用锁来保证有且只有一个线程来操作共享资源。比如: object obj = new object();lock (obj) { //操作共享资源 } 利用操作系统提供的锁机制,可以确保多线...

中关村的老男孩
35分钟前
1
0
idea+mybatis

报错信息如下 Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession.### The error may exist in com/bdqn/dao/UserDaoMappe......

冥焱
35分钟前
2
0
Android之用sharedUserId来实现不同应用(APK)数据共享

android:sharedUserId 当APK安装的时候,userid这个标志就会产生。APK在设备上的整个生命周期中,这个ID不再改变。不同设备上同一个应用包可能有不同的userid,重要的是在给定的设备上,每个...

天王盖地虎626
37分钟前
1
0
如何给龙芯电脑录屏

vokoscreen Gnome提供的录屏插件screencast https://extensions.gnome.org/extension/690/easyscreencast/...

gugudu
45分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部