Logback


Logback

1、官方文档

https://logback.qos.ch/manual/index.html

2、下载地址

https://logback.qos.ch/download.html

3、快速使用

这里主要是 logback + SLF4j 配合使用。

  1. pom引入jar包


	
	    org.slf4j
	    slf4j-api
	    1.7.31
	
	
	    ch.qos.logback
	    logback-core
	    1.2.3
	
	
	    ch.qos.logback
	    logback-classic
	    1.2.3
	    compile
	

  1. src/main/resource 创建 logback.xml 文件

<?xml version="1.0" encoding="UTF-8"?>

    logback
    
   
    
    
        
        
            INFO
        
        
            ${CONSOLE_LOG_PATTERN}
            
            UTF-8
        
    
     
    
        
    


  1. Java 代码
package com.black.nginx.app;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class NginxApp {

    private static Logger logger = LoggerFactory.getLogger(NginxApp.class);
	
	public static void main(String[] args) {
		logger.info("app start ...");
		
		
		logger.info("app shutdown .");
	}
}
  1. 效果
2021-07-13 23:19:41.591  INFO   --- [           main] com.black.nginx.app.NginxApp             :  app start ...
2021-07-13 23:19:41.596  INFO   --- [           main] com.black.nginx.app.NginxApp             :  app shutdown .

4、logback.xml拷贝就用

  • console 打印
<?xml version="1.0" encoding="UTF-8"?>






    logback
    
     
    
    
        
            ${CONSOLE_LOG_PATTERN}
            
            UTF-8
        
    
    
        
    

打印结果:

2021-07-14 23:00:38.497 [INFO ] [main      ] com.black.nginx.app.NginxApp.main[line:11]: app start ...
2021-07-14 23:00:38.497 [INFO ] [main      ] com.black.nginx.app.NginxApp.main[line:14]: app shutdown .
  • 日志文件
    1、固定文件
<?xml version="1.0" encoding="UTF-8"?>

    
     
    
    
    
    
        
        ${file_name_date}/log-info-${file_name_date}.log
        
            ${CONSOLE_LOG_PATTERN}
            
            UTF-8
        
    
    
        
    

2、基于时间分隔文件

<?xml version="1.0" encoding="UTF-8"?>

    
     
    
    
    
     
        
        
        true
        
        
        
        
        
        
            
            logFile.%d{yyyy-MM-dd}.log
            
		    30
		     
		    3GB
        
    
    
        
    

3、基于时间和大小分隔文件

<?xml version="1.0" encoding="UTF-8"?>

    
     
    
    
    
     
        
        
        true
        
        
        
            
            logFile.%d{yyyy-MM-dd}.%i.log
            
            100MB 
            
            30
             
            20GB
        
    
    
        
    

4、基于固定大小

<?xml version="1.0" encoding="UTF-8"?>

    
     
    
    
    
     
        
        log-info.log

        
        
	      log-info.%i.log.zip
	      1
	      3
	    
	    
	    
	      5MB
	    
	    
	      ${CONSOLE_LOG_PATTERN}
	    
    
    
        
    

5、logback.xml Appender 详解

  • ConsoleAppender

  
    
    
      %-4relative [%thread] %-5level %logger{35} - %msg %n
    
  
  
    
  


  • FileAppender

  
  

  
    
    log-${bySecond}.txt
    
      %logger{35} - %msg%n
    
  
  
    
  

  • RollingFileAppender

  
    logFile.log
    
      
      logFile.%d{yyyy-MM-dd}.log

      
      30
      3GB

    

    
      %-4relative [%thread] %-5level %logger{35} - %msg%n
    
   

  
    
  


  
    
    true
    
      logFile.%d{yyyy-MM-dd}.log
      30 
      3GB
    

    
      %-4relative [%thread] %-5level %logger{35} - %msg%n
    
   

  
    
  



  
    mylog.txt
    
      
      mylog-%d{yyyy-MM-dd}.%i.txt
       
       100MB
       60
       20GB
    
    
      %msg%n
    
  


  
    
  




  
    test.log

    
      tests.%i.log.zip
      1
      3
    

    
      5MB
    
    
      %-4relative [%thread] %-5level %logger{35} - %msg%n
    
  
  
    
  





  
    test.log
    
      test.%i.log.zip
      1
      3
    

    
      5MB
    
    
      %-4relative [%thread] %-5level %logger{35} - %msg%n
    
  
        
  
    
  


fileNamePattern 与 Rollover关系:

fileNamePattern Rollover schedule
/wombat/foo.%d 每天
/wombat/%d{yyyy/MM}/foo.txt Rollover 每月开始
/wombat/foo.%d{yyyy-ww}.log Rollover 每周第一天
/wombat/foo%d{yyyy-MM-dd_HH}.log Rollover 每小时滚动
/wombat/foo%d{yyyy-MM-dd_HH-mm}.log Rollover 每分钟滚动
/wombat/foo%d{yyyy-MM-dd_HH-mm, UTC}.log Rollover 每分钟滚动
/foo/%d{yyyy-MM,aux}/%d.log Rollover daily. Archives located under a folder containing year and month.

Rollover 就是 maxHistory 属性的单位。

6、logback.xml PatternLayout 详解

抄自https://logback.qos.ch/manual/layouts.html

我对 logback.xml 中 pattern 里的 %d %c 什么的搞不明白什么含义,下面就介绍一下,pattern 中使用到的Conversion Word的含义:

  • %c{length}

或 %lo{length} %logger{length}

Conversion Logger name Result
%logger mainPackage.sub.sample.Bar mainPackage.sub.sample.Bar
%logger{0} mainPackage.sub.sample.Bar Bar
%logger{5} mainPackage.sub.sample.Bar m.s.s.Bar
%logger{10} mainPackage.sub.sample.Bar m.s.s.Bar
%logger{15} mainPackage.sub.sample.Bar m.s.sample.Bar
%logger{16} mainPackage.sub.sample.Bar m.sub.sample.Bar
%logger{26} mainPackage.sub.sample.Bar mainPackage.sub.sample.Bar
  • %C{length}

或 %class{length}

打印类名

  • %cn

或 contextName

  • %d{pattern}

或 %date{pattern} %d{pattern, timezone}
%date{pattern, timezone}

打印日期

Conversion Pattern Result
%d 2006-10-20 14:06:49,812
%date 2006-10-20 14:06:49,812
%date{ISO8601} 2006-10-20 14:06:49,812
%date{HH:mm:ss.SSS} 14:06:49.812
%date{dd MMM yyyy;HH:mm:ss.SSS} 20 oct. 2006;14:06:49.812
  • %F / %file

java 源文件的名字

  • %M / %method
    打印日志所在方法名

  • %L / %line
    logger.info等代码所在文件的行数

  • %m / %msg / %message
    打印 用户日志信息,即 logger.info()的参数

  • %n
    换行

  • %p / %le / %level
    日志事件等级 INFO ,DEBUG等

  • %r / %relative
    应用启动执行,一直到打印日志,执行的毫秒数

  • %t / %thread
    线程名

  • %ex{depth}

exception{depth}
throwable{depth}

打印异常信息控制

格式 结果
%ex mainPackage.foo.bar.TestException: Houston we have a problem
at mainPackage.foo.bar.TestThrower.fire(TestThrower.java:22)
at mainPackage.foo.bar.TestThrower.readyToLaunch(TestThrower.java:17)
at mainPackage.ExceptionLauncher.main(ExceptionLauncher.java:38)
%ex{short} mainPackage.foo.bar.TestException: Houston we have a problem
at mainPackage.foo.bar.TestThrower.fire(TestThrower.java:22)
%ex{full} mainPackage.foo.bar.TestException: Houston we have a problem
at mainPackage.foo.bar.TestThrower.fire(TestThrower.java:22)
at mainPackage.foo.bar.TestThrower.readyToLaunch(TestThrower.java:17)
at mainPackage.ExceptionLauncher.main(ExceptionLauncher.java:38)
%ex{2} mainPackage.foo.bar.TestException: Houston we have a problem
at mainPackage.foo.bar.TestThrower.fire(TestThrower.java:22)
at mainPackage.foo.bar.TestThrower.readyToLaunch(TestThrower.java:17)
  • %property{key}
    打印Properties文件中的key 对应的 value

  • %caller{depth}
    打印方法调用层级信息

7、logback.xml Format modifiers 详解

Format modifier 左对齐 最小宽度 最大宽度 评论
%20logger 20 如果小于20字符则默认右对齐
%-20logger 20 如果小于20字符则左对齐
%.10logger NA 30 超出30字符则删除
com.black.nginx.app.NginxApp 会打印出:p.NginxApp
%20.30logger 20 30 如果超过30个字符,则将从末尾开始截取30个字符打印
%-20.30logger 20 30 如果超过30个字符,则将从开头开始截取30个字符打印
%.-30logger NA 30 如果超过30个字符,则将从开头开始截取30个字符打印