springboot2配置日志
程序员文章站
2022-04-27 18:44:13
...
Spring Boot内部采用的是Commons Logging进行日志记录,但在底层为Java Util Logging、Log4J2、Logback等日志框架提供了默认配置 。Java 虽然有很多可用的日志框架,但SpringBoot默认使用的Logback的框架。
springboot默认的日志级别是INFO,,配置如下
logging:
level: debug
注意:这样配置启动会报如下错误
org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'logging.level' to java.util.Map<java.lang.String, org.springframework.boot.logging.LogLevel>
因为logging.level的值需要Map<String,String>类型,正确的配置如下:
logging:
level:
root: debug
假设你要到某个目录下设置日志级别,比如目录为com.demo 则配置如下
logging:
level:
com.demo: debug
除了使用配置文件配置,还可以使用logback.xml的配置,具体如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1000 seconds">
<property name="log.dir" value="./logs/" />
<property name="log.filename" value="springcloud" />
<!-- Output to Console -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}][%thread][%-5level][%logger:%line]--%mdc{client} %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份) -->
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.dir}${log.filename}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}${log.filename}.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<maxHistory>10</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<Pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}][%thread][%-5level][%logger:%line]--%mdc{client} %msg%n</Pattern>
</encoder>
</appender>
<!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份) -->
<appender name="ERRORFILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.dir}${log.filename}-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.dir}${log.filename}-error.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<maxHistory>10</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<Pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}][%thread][%-5level][%logger:%line]--%mdc{client} %msg%n</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF 默认是DEBUG -->
<root level="debug">
<appender-ref ref="Console" />
<appender-ref ref="FILE" />
<appender-ref ref="ERRORFILE" />
<!--<appender-ref ref="LOGSTASH" />-->
</root>
<logger name="com.channelsoft" level="DEBUG" />
<logger name="org.springframework" level="info" />
<logger name="org.apache.tomcat" level="info" />
<logger name="org.apache.shiro" level="trace" />
<logger name="sun" level="info" />
<logger name="javax" level="info" />
<!--<logger name="org.springframework.web.servlet.DispatcherServlet" level="DEBUG" />-->
</configuration>
以上的配置项,在此就不赘述了,基本上都是通用配置。