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.xmlhttps://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举例
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

     <!-- ConsoleAppender-输出到控制台 -->
    <appender name="consoleApp" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </layout>
    </appender>

    <!-- RollingFileAppender-输出到文件,滚动策略:每过一段时间则新建文件保存输出日志 -->
    <appender name="fileInfoApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <!-- 只输出INFO、WARN级别的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </encoder>
        <!-- 滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路径 -->
            <fileNamePattern>app_log/log/app.info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <appender name="fileErrorApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <!-- 只输出ERROR级别的日志 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </encoder>

        <!-- 设置滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路径 -->
            <fileNamePattern>app_log/log/app.err.%d.log</fileNamePattern>
            <!-- 控制保留的归档文件的最大数量,超出数量就删除旧文件,假设设置每个月滚动,
            且<maxHistory> 是1,则只保存最近1个月的文件,删除之前的旧文件 -->
            <MaxHistory>1</MaxHistory>

        </rollingPolicy>
    </appender>
    <!-- 设置日志级别为INFO,输出到三个地方 -->
    <root level="INFO">  
        <appender-ref ref="consoleApp"/>
        <appender-ref ref="fileInfoApp"/>
        <appender-ref ref="fileErrorApp"/>
    </root>
</configuration>

 

  • 个性化设置
Spring EnvironmentSystem PropertyComments
logging.exception-conversion-wordLOG_EXCEPTION_CONVERSION_WORDThe conversion word used when logging exceptions.
logging.fileLOG_FILEIf defined, it is used in the default log configuration.
logging.file.max-sizeLOG_FILE_MAX_SIZEMaximum log file size (if LOG_FILE enabled). (Only supported with the default Logback setup.)
logging.file.max-historyLOG_FILE_MAX_HISTORYMaximum number of archive log files to keep (if LOG_FILE enabled). (Only supported with the default Logback setup.)
logging.pathLOG_PATHIf defined, it is used in the default log configuration.
logging.pattern.consoleCONSOLE_LOG_PATTERNThe log pattern to use on the console (stdout). (Only supported with the default Logback setup.)
logging.pattern.dateformatLOG_DATEFORMAT_PATTERNAppender pattern for log date format. (Only supported with the default Logback setup.)
logging.pattern.fileFILE_LOG_PATTERNThe log pattern to use in a file (if LOG_FILE is enabled). (Only supported with the default Logback setup.)
logging.pattern.levelLOG_LEVEL_PATTERNThe format to use when rendering the log level (default %5p). (Only supported with the default Logback setup.)
PIDPIDThe current process ID (discovered if possible and when not already defined as an OS environment variable).

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值