一文读懂Logback的配置

前言

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger

嘉定ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

种一棵树最好的时间是十年前,其次是现在

絮叨

为啥想着写这个呢?是这样,小六六每次搭建系统的时候,都会涉及到这块的配置嘛,然后我发现我搭建了这么多次的系统,大部分的情况下,竟然是copy来完成的,然后这次搭建的过程中,又对这些配置又了点理解,所以打算给大家分享分享一些关键的点,让大家多Java 项目的日志有一些更加深入的理解吧!当然这边文章也得给大家清晰的理解logback的配置吧!尽量写的直白点!文章打算冲以下几个方面来描述

  • 官网文档
  • logback.xml常用配置详解
  • 一个小案例加深对配置的理解
  • logback.xml的参考配置(实战)
  • 开发时,小六六自己的一些特殊的用法(实战)

参考的文档

开始就先给大家给贴下参考的文档吧!不过我觉得你应该不会去看,哈哈。我也是一样的,看不下去官方文档

logback.xml常用配置详解

常用节点结构图:

相信大家对这个图应该不陌生,就是我们再spring-logback.xml里面要配置的文件就是这几个配置,下面我先来给大家讲讲细节

根节点 configuration

包含下面三个属性

  • scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
  • scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  • debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
 
 
 
 
  1.  
  2.      
  3.  

子节点 appender

它的作用是负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名。

下面小六六带大家来看看我们常见的几种appender吧!工作上肯定用的到的

ConsoleAppender 把日志输出到控制台

encoder:对日志进行格式化。

 
 
 
 
  1.    
  2.       ${CONSOLE_LOG_PATTERN}
  3.    

FileAppender:把日志添加到文件

  • file:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
  • append:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
  • encoder:对记录事件进行格式化。
  • prudent:如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。
 
 
 
 
  1.  
  2.        
  3.         testFile.log 
  4.         true 
  5.          
  6.           %-4relative [%thread] %-5level %logger{35} - %msg%n 
  7.          
  8.        
  9.        
  10.        
  11.        
  12.   

RollingFileAppender 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 这个小六六觉得是用的最多的一个了

  • file:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
  • append:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
  • rollingPolicy:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类

class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy":最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。

 
 
 
 
  1.    ${log.path}/dataBi.dat
  2.    
  3.       ${log.path}/dataBi.dat.%d{yyyyMMdd}.gz
  4.       30
  5.    
  6.    
  7.       UTF-8
  8.       %date|%msg%n
  9.    

class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy":查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动

 
 
 
 
  1.    ${log.path}/debug.log
  2.    
  3.       ${log.path}/%d{yyyy-MM, aux}/debug.%d{yyyy-MM-dd}.%i.log.gz
  4.       50MB
  5.       30
  6.    
  7.    
  8.       %date [%thread] %-5level [%logger{50}] %file:%line - %msg%n
  9.    

子节点 logger

用来设置某一个包或具体的某一个类的日志打印级别、以及指定。

  • logger仅有一个name属性,一个可选的level和一个可选的addtivity属性
  • 可以包含零个或多个元素,标识这个appender将会添加到这个logger。
  • name: 用来指定受此loger约束的某一个包或者具体的某一个类。
  • level: 用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF,还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前loger将会继承上级的级别。
  • addtivity: 是否向上级logger传递打印信息。默认是true。可以包含零个或多个appender-ref素,标识这个appender将会添加到这个logger。
 
 
 
 
  1.    

像我们的bi日志,一般这种标准化,流程化的日志。

子节点root

它也是logger元素,但是它是根loger,是所有的上级。只有一个level属性,因为name已经被命名为"root",且已经是最上级了。

 
 
 
 
  1.    
  2.    
  3.    

好了,上面就是我们比较重要的几个元素了,还有一两个小元素的话,小六六这边就没给大家看了。

logback.xml配置示例

 
 
 
 
  1.     
  2.     
  3.     
  4.     
  5.         
  6.             
  7.             %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
  8.         
  9.     
  10.     
  11.     
  12.         
  13.             
  14.             ${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log
  15.             
  16.             30
  17.         
  18.         
  19.             
  20.             %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
  21.         
  22.         
  23.         
  24.             10MB
  25.         
  26.     
  27.     
  28.     
  29.     
  30.     
  31.     
  32.     
  33.     
  34.     
  35.     
  36.     
  37.     
  38.     
  39.     
  40.         
  41.         
  42.     

一个小案例加深对配置的理解

 
 
 
 
  1.     
  2.     
  3.     
  4.     
  5.         
  6.             
  7.             %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
  8.         
  9.     
  10.     
  11.     
  12.         
  13.             
  14.             ${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log
  15.             
  16.             30
  17.         
  18.         
  19.             
  20.             %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
  21.         
  22.         
  23.         
  24.             10MB
  25.         
  26.     
  27.     
  28.     
  29.     
  30.     
  31.     
  32.     
  33.     
  34.     
  35.     
  36.     
  37.     
  38.     
  39.     
  40.         
  41.         
  42.     

开发时,小六六自己的一些特殊的用法(实战)

  • 第一个,就是在日志的时候加上traceId,这样的好处就是可以把日志收集到日志平台的时候,可以很好的查到整个流程
 
 
 
 
  1.     ${graylogHost}
  2.     ${graylogPort}
  3.     
  4.         ${originHost}
  5.         false
  6.         true
  7.         true
  8.         false
  9.         false
  10.         true
  11.         
  12.             %m%nopex
  13.         
  14.         
  15.             %m%n
  16.         
  17.         app_name:${appName}
  18.         app_version:${appVersion}
  19.         os_arch:${os.arch}
  20.         os_name:${os.name}
  21.         os_version:${os.version}
  22.         uri:%X{uri}
  23.         uid:%X{uid}
  24.         ip:%X{ip}
  25.         traceId:%X{traceId}
  26.     

其中的原理是通过MDC实现的

  • 第二个就是,我们一些格式话的日志,做到数仓里面
 
 
 
 
  1.    ${log.path}/dataBi.dat
  2.    
  3.       ${log.path}/dataBi.dat.%d{yyyyMMdd}.gz
  4.       30
  5.    
  6.    
  7.       UTF-8
  8.       %date|%msg%n
  9.    
  10.    ${log.path}/dataDi.dat
  11.    
  12.       ${log.path}/dataDi.dat.%d{yyyyMMdd}.gz
  13.       30
  14.    
  15.    
  16.       UTF-8
  17.       %date|%msg%n
  18.    

类似于这种。。

结束

我是小六六,三天打鱼,两天晒网,今天就到这了哈!

当前文章:一文读懂Logback的配置
链接地址:http://www.hantingmc.com/qtweb/news15/482615.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联