SpringBoot2.x(十一)Logback日志介绍和SpringBoot整合实战

新日志框架LogBack介绍

常用处理java的日志组件有 slf4j,log4j,logback,common-logging等。

logback介绍

基于Log4j基础上大量改良,不能单独使用,推荐配合日志框架SLF4J来使用。

Logback当前分成三个模块:logback-core,logback-classiclogback-access;logback-core是其它两个模块的基础模块

Logback的核心对象

Logger日志记录器
Appender:指定日志输出的目的地,目的地可以是控制台文件
Layout:日志布局 格式化日志信息的输出

log4j

我们使用 log4j时,通常在 classpath下增加一个 log4j.propertieslog4j会默认加载该文件复写框架默认的日志配置):

===========log4j示例===========		
### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=D://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=D://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n 

 

log4j.properties转logback.xml

对应的,logback也需要日志配置,会默认加载 classpath下的 logback.xml

如果有 log4j.properties,可以通过在线转换工具直接转为 logback.xml:https://logback.qos.ch/translator/


SpringBoot2.x整合logback

官网介绍

SpringBoot2.0.1日志配置

Spring Boot使用Commons Logging进行所有内部日志记录,但保留底层日志实现。 为Java Util LoggingLog4J2Logback提供了默认配置。 在每种情况下,记录器都预先配置为使用控制台输出,并且还提供可选的文件输出

默认情况下,如果引入了 starter-xx依赖,则使用Logback进行日志记录。并且会指定适当的Logback路由,以确保依赖了Java Util Logging,Commons Logging,Log4J或SLF4J的依赖库都能正常工作。

格式化日志输出

SpringBoot提供的默认格式化输出如下

2014-03-05 10:57:51.112  INFO 45469 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/7.0.52
2014-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2014-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1358 ms
2014-03-05 10:57:51.698  INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2014-03-05 10:57:51.702  INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]

 

  • 输出内容分别是:
    • 日期和时间:毫秒精度,易于排序
    • 日志级别:ERROR>WARN>INFO>DEBUG>TRACE
    • 进程ID
    • ----分隔符,用于区分实际日志消息的开始
    • 线程名称:括在方括号中(可能会截断控制台输出)
    • 记录器名称:这通常是源类名称(通常缩写)
    • 日志消息

Logback没有FATAL级别。 它被替换为ERROR

调整控制台输出日志为DEBUG级别

默认情况下,SpringBoot只会在控制台输出 INFO及以上级别(WARNERROR)的日志。如果你想输出 DEBUG级别的日志,可以通过以下两种方法:

1.   在运行SpringBoot应用 jar包时指定 --debug参数:

java -jar myApp.jar --debug

2.   或者在你的 application.properties中添加 debug=true

输出日志到文件中

SpringBoot默认只将日志输出到控制台,如果你想也将它输出到文件中那么你可以在 application.properties中设置 logging.file输出到指定的文件中或设置logging.path输出到指定的目录下(可以是相对目录也可以是绝对目录)。

logging.file=my.log则会输出到 classpath下, loggging.file=/var/log则会输出日志到/var/log目录下(自动生成文件)。

你还可以通过logging.file.max-size 指定当设置输出日志到指定目录下时,日志文件大小达到多少就轮询创建新的日志文件。

调整各系统日志级别

所有支持 logging的系统(框架)都可以在application.properties中设置一个不同的日志级别:

logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

自定义日志系统配置文件

  • 指定日志系统和其配置文件名称

如果你的应用引入了 starter-xx依赖,SpringBoot默认会采用 logback日志系统,如果你想使用 log4jJava Util Logging则需要配置 org.springframework.boot.logging.LoggingSystem=Log4j2org.springframework.boot.logging.LoggingSystem =JDK

并且如果采用的 logback,则SpringBoot会默认加载 classpath下的logback-spring.xmllogback-spring.groovylogback.xmllogback.groovy作为它的配置文件;如果采用的 log4j2则默认加载 log4j2-spring.xml 或 log4j2.xml ;如果采用的 JDK,则默认加载 logging.properties

  • logback-spring.xml举例



     
    
        
            
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            
        
    

    
    
         
        
            ERROR
            DENY
            ACCEPT
        
        
            
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            
        
        
        
            
            app_log/log/app.info.%d.log
        
    

    
         
        
            ERROR
        
        
            
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            
        

        
        
            
            app_log/log/app.err.%d.log
            
            1

        
    
    
      
        
        
        
    

 

  • 个性化设置
Spring Environment System Property Comments
logging.exception-conversion-word LOG_EXCEPTION_CONVERSION_WORD The conversion word used when logging exceptions.
logging.file LOG_FILE If defined, it is used in the default log configuration.
logging.file.max-size LOG_FILE_MAX_SIZE Maximum log file size (if LOG_FILE enabled). (Only supported with the default Logback setup.)
logging.file.max-history LOG_FILE_MAX_HISTORY Maximum number of archive log files to keep (if LOG_FILE enabled). (Only supported with the default Logback setup.)
logging.path LOG_PATH If defined, it is used in the default log configuration.
logging.pattern.console CONSOLE_LOG_PATTERN The log pattern to use on the console (stdout). (Only supported with the default Logback setup.)
logging.pattern.dateformat LOG_DATEFORMAT_PATTERN Appender pattern for log date format. (Only supported with the default Logback setup.)
logging.pattern.file FILE_LOG_PATTERN The log pattern to use in a file (if LOG_FILE is enabled). (Only supported with the default Logback setup.)
logging.pattern.level LOG_LEVEL_PATTERN The format to use when rendering the log level (default %5p). (Only supported with the default Logback setup.)
PID PID The current process ID (discovered if possible and when not already defined as an OS environment variable).

学习资料下载:白玉搜一搜

你可能感兴趣的:(spring,boot)