资讯专栏INFORMATION COLUMN

logback 配置文件编写

546669204 / 2009人阅读

摘要:配置本文讲的文件的配置,其中主要是在介绍各类。注意,使用必须声明节点子节点指定命名模式注意,必须包含,为窗口索引。并且为多带带拿出来。

Logback 配置
本文讲logback的xml文件的配置,其中主要是在介绍各类appender。
logback 的简单例子

xml文件大概结构 导图链接

xml




    拽拽坏人帮

    
    
        
            %cn %d{hh:MM:ss} [%20logger{0}] - %message%n
        
    

    
        
    

    



代码使用

public class MyLogback {

    private final static Logger logger 
        = LoggerFactory.getLogger("com.cck.MyLogback");

    public static void main(String[] args) {

        logger.info("hello world");
    }
}
xml配置中的appender
appender 节点是配置日志的目的地,该节点必须指定name和class属性,不同的class会有不同的子节点。

分别有以下几种类型的appender

ConsoleAppender   控制台

FileAppender     文件

RollingFileAppender  滚动记录文件

SiftingAppender      自定义筛选文件

1. ConsoleAppender 控制台

xml




    拽拽坏人帮
    
    
    
        
            %cn -%.-1p %d{hh:MM:ss} [%8logger{26}] - %message%n
        
        
            System.err
        
    

    
        
    

    

String 用于指定字符串在控制台的打印方式
默认是 System.out, 也可以是System.err
2. FileAppender 文件

xml




    拽拽坏人帮

    
    
        logback.log
        
            %cn -%.-1p %d{hh:MM:ss} [%8logger{26}] - %message%n
        
        true
        true
    

    
        
    

    
logback.log 指定日志文件名

true 日志是否追加到文件结尾,默认是true

true true的情况下,日志会被安全地写入到文件 (加了锁,因为存在多个FileAppender同时向日志文件写入的情况),默认是false

3. RollingFileAppender 滚动记录文件 3.1 滚动记录文件 -- 根据时间 TimeBasedRollingPolicy

xml




    拽拽坏人帮

    
    
        
            %cn -%.-1p %d{hh:MM:ss} [%8logger{26}] - %message%n
        
        
        
            logFile/%d{yyyy/MM/dd}.log
            30
        
    

    
        
    

    
 指定滚动行为

rollingPolicy 子节点 指定文件名模式, yyyy/mm/dd 表示按天滚动 模式例子

30 控制保存的最大文件数量
如果是每天滚动30表示保存最近30天的日志文件

3.2 滚动记录文件 -- 根据长度 FixedWindowRollingPolicy

xml




    拽拽坏人帮

    
     
        testFixedRollFile.log
        
        
            %d{hh:MM:ss} [%20logger{0}] - %message%n
        

        
            logFile/logFile.%i.log
            1
            5
        

        
            1KB
        
    

    
        
    

    

 指定根据窗口长度进滚动。
注意,使用 FixedWindowRollingPolicy 必须声明节点

rollingPolicy 子节点 指定命名模式
注意,必须包含%i,i 为窗口索引。
滚动时,日志文件名为logFile/logFile"i".log
eg .logFile/logFile1.log logFile/logFile2.log

rollingPolicy 子节点 1 指定 i 的最小值

rollingPolicy 子节点 5 指定 i 的最大值

指定何时滚动

triggeringPolicy 子节点 1KB 指定文件大小为 1KB 时进行滚动

4. SiftingAppender 自定义筛选文件 假设有以下需求
userId 是6位的,现在想让前4位id相同的用户的日志放在一个文件夹中。并且id为 000000 多带带拿出来。
也就是以下的效果:

           /000000.log
           /0001
              /01.log
              /23.log
           /0002
              /12.log
              /00.log
第一步,按照业务需求编写Java类
package com.cck;                                                                                                                                                                                                                                                                                               
import java.util.Map;                                                                                                                                                                                                                                                                                     
import ch.qos.logback.classic.spi.ILoggingEvent;                                                                                                        
import ch.qos.logback.core.sift.AbstractDiscriminator;                                                                                                  
                                                                                                                                                        
public class MyLoggerDiscriminator extends AbstractDiscriminator {                                                                       
                                                                                                                                                        
    public final static String KEY = "user";                                                                                                            
                                                                                                                                                        
    private String filePath;                                                                                                                            
    private String fileName;                                                                                                                            
                                                                                                                                                        
    private String defaultValue = "000000";                                                                                                             
                                                                                                                                                        
    public String getDefaultValue() {                                                                                                                   
        return defaultValue;                                                                                                                            
    }                                                                                                                                                   
                                                                                                                                                        
    public void setDefaultValue(String defaultValue) {                                                                                                  
        this.defaultValue = defaultValue;                                                                                                               
    }                                                                                                                                                   
                                                                                                                                                        
    @Override                                                                                                                                           
    public String getDiscriminatingValue(ILoggingEvent e) {                                                                                             
        // 拿到mdc                                                                                                                                        
        Map mdc = e.getMDCPropertyMap();                                                                                                
                                                                                                                                                        
        String user = mdc.get(KEY);                                                                                                                     
                                                                                                                                                        
        if(user == null || user == "000000") {                                                                                                          
            return defaultValue;                                                                                                                        
        }                                                                                                                                               
        // 返回一个路径                                                                                                                                       
        filePath = user.substring(0, 4) + "/";                                                                                                          
        fileName = user.substring(4, 6);                                                                                                                
        return filePath + fileName;                                                                                                                     
    }                                                                                                                                                   
                                                                                                                                                        
    @Override                                                                                                                                           
    public String getKey() {                                                                                                                            
        return KEY;                                                                                                                                     
    }                                                                                                                                                   
                                                                                                                                                        
}   
第二步,在xml使用
                                                                                                                  
                                                                                                                           
                                                                                                                                                        
    拽拽坏人帮                                                                                                                    
                                                                                                                                                        
                                                                                                                                            
                                                                                                                                                                                                                      
                                                                                                 
                                                                                                                                                        
                                                                                                                                                  
                                                                  
                siftingLog/${user}.log                                                                                                     
                                                                                                                                               
                    %date{HH:mm:ss} %.-1level[%25logger{0}] - <%message>%n                                                     
                                                                                                                                              
                                                                              
                    siftingLog/${user}.%d{yyyy-MM-dd}.log.gz                                                         
                                                                                                                                        
                                                                                                                                             
                                                                                                                                                 
                                                                                                                                             
                                                                                                                                                        
                                                                                                         
                                                                                                                       
                                                                                                                                               
                                                                                                                                                        
                                                                                                                              
                                                                                                                                        
 指定自定自定义的鉴别类
第三步,使用
package com.cck;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;

public class MyLogback {

    private final static Logger logger = LoggerFactory.getLogger("com.cck.MyLogback");

    public static void main(String[] args) {
        
        MDC.put(MyLoggerDiscriminator.KEY, "156651");
        logger.debug("hello world");
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110391.html

相关文章

  • LogBack入门实践

    摘要:日志名的从开始,自动递增就是指抛出的异常,是显示全部,如果在中写入数字,则表示展示多少行重点来了,上边都是输出源。 一、简介 LogBack是一个日志框架,它是Log4j作者Ceki的又一个日志组件。 LogBack,Slf4j,Log4j之间的关系 slf4j是The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志F...

    马永翠 评论0 收藏0
  • springboot超级详细的日志配置(基于logback)

    摘要:默认情况下将级别的日志输出到控制台中,不会写到日志文件,且不能进行复杂配置。节点用于定义变量,方便使用。 showImg(https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190320135049.png); 前言   java web 下有好几种日志框架,比如:logback,log4j,log4j2(slj...

    meislzhua 评论0 收藏0
  • java日志框架

    摘要:一日志概述领域存在多种日志框架,目前常用的日志框架包括,,,,,。开销更高三与其他日志组件调用关系包名说明版本的桥接器,你需要将加入。的桥接器,原生日志框架。 一、Java日志概述 java领域存在多种日志框架,目前常用的日志框架包括Log4j 1,Log4j 2,Commons Logging,Slf4j,Logback,Jul。 Commons Logging和Slf4j是日志...

    dendoink 评论0 收藏0
  • Logback配置文件这么写,TPS提高10倍

    摘要:框架会默认加载下命名为或的配置文件。采用异步写日志的方式而不让此次写日志发生磁盘,阻塞线程从而造成不必要的性能损耗。 通过阅读本篇文章将了解到 1.日志输出到文件并根据LEVEL级别将日志分类保存到不同文件 2.通过异步输出日志减少磁盘IO提高性能 3.异步输出日志的原理 配置文件logback-spring.xml SpringBoot工程自带logback和slf4j的依赖,所...

    cnTomato 评论0 收藏0
  • Logback配置文件这么写,TPS提高10倍

    摘要:框架会默认加载下命名为或的配置文件。采用异步写日志的方式而不让此次写日志发生磁盘,阻塞线程从而造成不必要的性能损耗。 通过阅读本篇文章将了解到 1.日志输出到文件并根据LEVEL级别将日志分类保存到不同文件 2.通过异步输出日志减少磁盘IO提高性能 3.异步输出日志的原理 配置文件logback-spring.xml SpringBoot工程自带logback和slf4j的依赖,所...

    yedf 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<