您的位置:首页 > 编程语言 > Java开发

SpringBoot基础教程2-1-5 日志规范-logback配置详解

2018-07-15 14:49 1181 查看

1. 概述

日志会在
ApplicationContext
 之前初始化, 
SpringBoot
 为我们提供了 
logging.config
 属性,方便我们配置自定义日志文件。默认情况它会根据日志的依赖自动加载。

Logging SystemCustomization
JDK
logging.properties
Log4j2
log4j2-spring.xml
log4j2.xml
Logback
logback-spring.xml
logback-spring.groovy
logback.xml
logback.groovy
如果选择
Logback
,在
application.yml
添加配置如下:

# logback配置文件路径;如果配置文件放在根目录,则无需配置
logging:
config: classpath:config/logback-spring.xml

2.
logback-spring.xml
配置详解

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

<!-- 读取 spring.application.name 属性来生成日志文件名
scope:作用域
name:在 logback-spring.xml 使用的键
source:application.properties 文件中的键,也可以时启动参数:java -jar xxx.jar -Dspring.application.appName=xxx
defaultValue:默认值
-->
<springProperty scope="context" name="appName" source="spring.application.appName" defaultValue="appName.log"/>

<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

<!--
yyyy-MM-dd HH:mm:ss.SSS: 日志时间
LOG_LEVEL_PATTERN: 日志级别
PID: 进程id
t: 线程名
logger: 打印日志类名
LOG_EXCEPTION_CONVERSION_WORD: 日志转换器
-->
<!--占位符定义:控制台彩色日志格式-->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!--占位符定义:文件日志格式-->
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%15.15t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

<!--占位符定义:日志文件路径,文件-->
<property name="FILE_PATH" value="./../logs" />

<!--日志输出的目的地-->
<!--日志输出的目的地:控制台,本地启服务使用-->
<appender name="CONSOLE_LOCAL" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- pattern节点,用来设置日志的输入格式 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>

<!--日志输出的目的地:文件,线上定位问题使用,建议按日期或者大小归档-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${FILE_PATH}/${appName}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${FILE_PATH}/${appName}.%d{yyyy-MM-dd}.log</fileNamePattern>
<MaxHistory>100</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>

<root level="info">
<appender-ref ref="CONSOLE_LOCAL" />
<appender-ref ref="FILE" />
</root>

<!--多环境日志配置-->
<!--线上环境日志级别为Info,并且线上环境写日志文件-->
<springProfile name="pro">
<root level="info">
<appender-ref ref="FILE" />
</root>
</springProfile>

<!-- 开发环境日志级别为DEBUG,并且开发环境不写日志文件 -->
<springProfile name="dev">
<root level="debug">
<appender-ref ref="CONSOLE_LOCAL" />
</root>
</springProfile>
</configuration>


springProperty
可以让我使用
Spring Environment
中的属性。例如:读
application.yml
配置中的值,或者启动参数中的值

springProfile
可以让我们适配多环境

3. 工程目录



4. 结束语

说点什么呢,有任何建议,欢迎留言探讨,本文源码

欢迎关注博主公众号:
Java十分钟


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息