实际项目中用到的logback例子

本文详细介绍 Logback 在银行项目中的具体配置实例,包括不同类型的日志文件设置、按日期和大小滚动策略等。通过实际案例展示如何高效管理和归档日志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某个银行项目中实际引用的Logback实例,仅提供大家参考!!!!

[html]  view plain  copy
  1. <!-- if debug set to true, context info always print  
  2.  otherwise the contex info will print when error occour -->  
  3. <configuration scan="true" scanPeriod="60 seconds" debug="false">   
  4.   
  5.   <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">    
  6.      <layout class="ch.qos.logback.classic.PatternLayout">    
  7.        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{40} - %msg%n</pattern>    
  8.      </layout>    
  9.    </appender>    
  10.    
  11.  <!-- 所有日志文件-->  
  12.  <appender name="AllLog" class="ch.qos.logback.core.rolling.RollingFileAppender">   
  13.   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  14.    <fileNamePattern>log/abcchina/all/%d{yyyy-MM-dd}.log</fileNamePattern>   
  15.    <maxHistory>30</maxHistory>   
  16.   </rollingPolicy>   
  17.   <encoder>   
  18.    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{40} - %msg%n</pattern>   
  19.   </encoder>   
  20.  </appender>  
  21.    
  22.  <appender name="TaskLog" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  23.   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  24.    <fileNamePattern>log/abcchina/task/%d{yyyy-MM-dd}.log</fileNamePattern>   
  25.    <maxHistory>30</maxHistory>  
  26.   </rollingPolicy>   
  27.   <encoder>   
  28.    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{40} - %msg%n</pattern>   
  29.   </encoder>   
  30.  </appender>  
  31.  <appender name="SendLog" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  32.   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  33.    <fileNamePattern>log/abcchina/send/%d{yyyy-MM-dd}.log</fileNamePattern>   
  34.    <maxHistory>30</maxHistory>  
  35.   </rollingPolicy>   
  36.   <encoder>   
  37.    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{40} - %msg%n</pattern>   
  38.   </encoder>   
  39.  </appender>  
  40.  <!-- 为莫个包下的所有类指定Appender 这里也可以指定类名称例如:com.aa.bb.ClassName-->    
  41.  <logger name="com.aa.bb" >  
  42.   <appender-ref ref="TaskLog" />  
  43.  </logger>  
  44.    
  45.  <logger name="com.aa.cc" >  
  46.   <appender-ref ref="SendLog" />  
  47.  </logger>  
  48.    
  49.  <root level="INFO">   
  50.   <appender-ref ref="AllLog" />  
  51.  </root>   
  52. </configuration>  


 



之前转载了用log4j来实现同时按照日期和大小来分隔日志,后来又研究了下log4j的升级版logback,用logback也来实现同时按照日期和大小来分隔日志,话不多说,直接上配置文件:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <configuration>  
  2.   <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  3.     <file>mylog.txt</file>  
  4.     <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">  
  5.       <!-- rollover daily -->  
  6.       <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>  
  7.        <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->  
  8.        <maxFileSize>100MB</maxFileSize>      
  9.        <maxHistory>60</maxHistory>  
  10.        <totalSizeCap>20GB</totalSizeCap>  
  11.     </rollingPolicy>  
  12.   
  13.     <encoder>  
  14.       <pattern>%msg%n</pattern>  
  15.     </encoder>  
  16.   </appender>  
  17.   
  18.   
  19.   <root level="DEBUG">  
  20.     <appender-ref ref="ROLLING" />  
  21.   </root>  
  22.   
  23. </configuration>  

这是从官方文档上直接摘抄下来的,地址:https://logback.qos.ch/manual/appenders.html

Sometimes you may wish to archive files essentially by date but at the same time limit the size of each log file, in particular if post-processing tools impose size limits on the log files. In order to address this requirement, logback ships with SizeAndTimeBasedRollingPolicy.

有时候你本来是希望按照日期来对日志进行归档,但是同时你又希望限制每个日志文件的大小,为了满足这一需求,logback提供了SizeAndTimeBasedRollingPolicy.

按照官网说明根据你想每天,每个小时甚至每分钟都生成一个新的日志文件,并且按照文件大小来分隔,都是可以的,没问题的。

附:经过测试,简单写10w条数据,发现按照大小分割的时候并没有log4j那么精确,比如我按照2MB来分割,log4j基本上在2048K左右就会进行分割,但是logback有可能在2.1M,2.5M左右进行分割。还有写日志总共用时也略微高于log4j。(⊙﹏⊙)(⊙﹏⊙)

pom依赖备忘:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <dependency>  
  2.           <groupId>ch.qos.logback</groupId>  
  3.           <artifactId>logback-core</artifactId>  
  4.           <version>1.1.8</version>  
  5.         </dependency>  
  6.         <dependency>  
  7.           <groupId>ch.qos.logback</groupId>  
  8.           <artifactId>logback-classic</artifactId>  
  9.           <version>1.1.8</version>  
  10.         </dependency>  
  11.         <dependency>  
  12.           <groupId>ch.qos.logback</groupId>  
  13.           <artifactId>logback-access</artifactId>  
  14.           <version>1.1.7</version>  
  15.         </dependency>  





### 配置 Logback 使用不同日志布局模式 Logback 提供多种方式来定义日志输出格式,通过配置 `logback.xml` 文件可以实现这一点。主要通过 `<layout>` 或者更灵活的 `<encoder>` 来指定具体的日志记录器应该如何呈现消息。 #### 定义简单的 PatternLayout 布局 最常用的方法之一就是利用内置的 `PatternLayout` 类来自定义日志条目的外观。下面是一个基本的例子: ```xml <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoder 默认使用 PatternLayout --> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration> ``` 此配置会使得每一条日志都按照时间戳、线程名、级别、类路径以及实际的消息内容这样的顺序显示出来[^1]。 #### 自定义复杂的 Layout 实现 对于更加复杂的需求,则可以通过创建自定义的 layout 类来满足特定的应用场景需求。例如,在某些情况下可能希望对日志中的敏感信息进行遮罩处理。这可以通过继承 `ch.qos.logback.classic.PatternLayout` 并重写其中的部分方法完成,也可以像引用中那样直接采用现有的解决方案如 Baeldung 所提供的 `MaskingPatternLayout`[^2]。 ```xml <configuration> <appender name="MASKED_LOGS" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="com.baeldung.logback.MaskingPatternLayout"> <pattern>%-5p [%d{ISO8601,UTC}] [%thread] %c: %m%n%rootException</pattern> </layout> </encoder> </appender> <root level="info"> <appender-ref ref="MASKED_LOGS"/> </root> </configuration> ``` 上述例子展示了如何应用带有屏蔽功能的日志布局,它不仅能够正常输出标准的日志信息,还能有效保护隐私数据不被泄露。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值