乐趣区

springboot 默认日志配置

springboot 默认日志配置
SpringBoot 日志配置 默认采用 LogBack 作为日志输出!
日志格式化

具体输出的格式详解如下:
2019-01-10 17:30:08.685:日期精确到时间毫秒级别
info 是日志级别:可以设置为其他的级别如 debug,error 等
9184:进程 id
— : 分割符
main: 表示主线程
com.xxxxx: 通常为源码类
“:”后即为详细的日志信息
控制台输出级别
在 application.properties 文件中配置
如果你的终端支持 ANSI,设置彩色输出会让日志更具可读性。通过在 application.properties 中设置 spring.output.ansi.enabled 参数来支持。

NEVER:禁用 ANSI-colored 输出(默认项)
DETECT:会检查终端是否支持 ANSI,是的话就采用彩色输出(推荐项)
ALWAYS:总是使用 ANSI-colored 格式输出,若终端不支持的时候,会有很多干扰信息,不推荐使用

# 多彩输出
spring.output.ansi.enabled=detect
#日志级别
logging.level.root=info
#所有包下面都以 debug 级别输出
logging.level.*=info

默认输出格式
可以通过 logging.pattern.console = 进行配置
文件输出
springboot 默认会将日志输出到控制台,线上查看日志时会很不方便,一般我们都是输出到文件。
需要在 application.properties 配置
#日志输出路径问价 优先输出 logging.file
logging.file=C:/Users/tizzy/Desktop/img/my.log

# 设置目录,会在该目录下创建 spring.log 文件,并写入日志内容,
logging.path=C:/Users/tizzy/Desktop/img/

# 日志大小 默认 10MB 会截断,重新输出到下一个文件中,默认级别为:ERROR、WARN、INFO
logging.file.max-size=10MB

logging.file 和 logging.path 同时设置时候会优先使用 logging.file 作为日志输出。
自定义日志配置
日志服务在 ApplicationContext 创建之前就被初始化了,并不是采用 Spring 的配置文件进行控制。
那我们来如何进行自定义配置日志呢。
springboot 为我们提供了一个规则,按照规则组织配置文件名,就可以被正确加载:

Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy

Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml

Log4j2:log4j2-spring.xml, log4j2.xml

JDK (Java Util Logging):logging.properties

LogBack xml 配置
<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<!– 控制台打印日志的相关配置 –>
<appender name=”STDOUT” class=”ch.qos.logback.core.ConsoleAppender”>
<!– 日志格式 –>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%level] – %m%n</pattern>
</encoder>
<!– 日志级别过滤器 –>
<filter class=”ch.qos.logback.classic.filter.LevelFilter”>
<!– 过滤的级别 –>
<level>WARN</level>
<!– 匹配时的操作:接收(记录)–>
<onMatch>ACCEPT</onMatch>
<!– 不匹配时的操作:拒绝(不记录)–>
<onMismatch>DENY</onMismatch>
</filter>
</appender>

<!– 文件保存日志的相关配置 –>
<appender name=”ERROR-OUT” class=”ch.qos.logback.core.rolling.RollingFileAppender”>
<!– 保存日志文件的路径 –>
<file>/logs/error.log</file>
<!– 日志格式 –>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] – %m%n</pattern>
</encoder>
<!– 日志级别过滤器 –>
<filter class=”ch.qos.logback.classic.filter.LevelFilter”>
<!– 过滤的级别 –>
<level>ERROR</level>
<!– 匹配时的操作:接收(记录)–>
<onMatch>ACCEPT</onMatch>
<!– 不匹配时的操作:拒绝(不记录)–>
<onMismatch>DENY</onMismatch>
</filter>
<!– 循环政策:基于时间创建日志文件 –>
<rollingPolicy class=”ch.qos.logback.core.rolling.TimeBasedRollingPolicy”>
<!– 日志文件名格式 –>
<fileNamePattern>error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!– 最大保存时间:30 天 –>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>

<!– 基于 dubug 处理日志:具体控制台或者文件对日志级别的处理还要看所在 appender 配置的 filter,如果没有配置 filter,则使用 root 配置 –>
<root level=”debug”>
<appender-ref ref=”STDOUT” />
<appender-ref ref=”ERROR-OUT” />
</root>
</configuration>
Log4j
引如 Log4j 日志时候 需要 排除 logBack 日志

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>

# 日志级别,日志追加程序列表 …
log4j.rootLogger=DEBUG,ServerDailyRollingFile,stdout
#文件保存日志
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
#文件保存日志日期格式
log4j.appender.ServerDailyRollingFile.DatePattern=’.’yyyy-MM-dd_HH
#文件保存日志文件路径
log4j.appender.ServerDailyRollingFile.File=/mnt/lunqi/demo/log4j.log
#文件保存日志布局程序
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout
#文件保存日志布局格式
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d – %m%n
#文件保存日志需要向后追加(false 是测试的时候日志文件就清空,true 的话就是在之前基础上往后写)
log4j.appender.ServerDailyRollingFile.Append=false
#控制台日志
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#控制台日志布局程序
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#控制台日志布局格式
log4j.appender.stdout.layout.ConversionPattern=%d yyyy-MM-dd HH:mm:ss %p [%c] %m%n
Log4j2
同样排除 LogBack 干扰,并且引入 Log4j2 依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

log4j2.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<appenders>
<Console name=”Console” target=”SYSTEM_OUT”>
<ThresholdFilter level=”trace” onMatch=”ACCEPT” onMismatch=”DENY” />
<PatternLayout pattern=”%d{HH:mm:ss.SSS} %-5level %class{36} %L %M – %msg%xEx%n” />
</Console>
<File name=”log” fileName=”log/test.log” append=”false”>
<PatternLayout pattern=”%d{HH:mm:ss.SSS} %-5level %class{36} %L %M – %msg%xEx%n” />
</File>
<RollingFile name=”RollingFile” fileName=”logs/spring.log” filePattern=”log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log”>
<PatternLayout pattern=”%d{yyyy-MM-dd ‘at’ HH:mm:ss z} %-5level %class{36} %L %M – %msg%xEx%n” />
<SizeBasedTriggeringPolicy size=”50MB” />
</RollingFile>
</appenders>

<loggers>
<root level=”trace”>
<appender-ref ref=”RollingFile” />
<appender-ref ref=”Console” />
</root>
</loggers>
</configuration>
更多查看官方文档
https://docs.spring.io/spring…

退出移动版