SpringBoot默认使用LogBack日志系统,LogBack默认将日志打印到控制台上。
默认情况下会记录ERROR-level,WARN-level和INFO-level消息。
启用调试模式,会打印很多无用信息,一般不设置:
application.properties配置debug=true
如何输出日志到文件
application.properties配置如下:
logging.path=D:/log
logging.file=springboot.log
注意:
在windows下不会在D:/log下创建springboot.log,而是在项目根目录下创建 springboot.log。
如果想要在D:/log创建怎么办呢?
我们只需要设置logging.file=D:/log/springboot.log,logging.path无需做任何设置。
logging.file.max-size
设置文件大小,默认为10M,达到限制后会切换一个新文件。
logging.file.max-history
以前日志文件归档大小,只保留多久或多大的日志,如果不设置就会无限期归档。
logging.file.total-size-cap
日志归档的总大小,当日志存档的总大小超过该阈值时,将删除备份。
如何设置日志级别
日志级别总共有TARCE < DEBUG < INFO < WARN < ERROR < FATAL ,且级别是逐渐提供, 如果日志级别设置为INFO,则意味TRACE和DEBUG级别的日志都看不到。
Spring Boot默认级别就是INFO。
applicaition.properties配置(logging.level配置日志级别):
logging.level.root=INFO
root:即项目的所有日志。
使用package级别
logging.level.druid.sql=DEBUG
如何定制日志格式
logging.pattern.console=
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger[%line] - %msg%n
logging.pattern.file=
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger[%line] - %msg%n
%d{yyyy-MM-dd HH:mm:ss.SSS}——日志输出时间
%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
%-5level——日志级别,并且使用5个字符靠左对齐
%logger——日志输出者的名字
%line——行号
%msg——日志消息
%n——平台的换行符
自定义日志配置
logback:默认加载logback-spring.xml,logback-spring.groovy,logback.xml,或者 logback.groovy;
Log4j: 默认加载log4j-spring.xml,log4j.xml;
JDK: 默认加载logging.properties,都是类路径下。
如果需要自定义文件:
logging.config=classpath:conf/xml/logback.xml # 用于配置外部logback.xml
实例logback-spring.xml(推荐)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- tomcat路径为:D:\tomcat\bin
value="logs"或者value="./logs" – D:\tomcat\bin\logs
value="/logs" – D:\logs
value="../logs" – D:\tomcat\logs -->
<property name="LOG_HOME" value="/var/logs/GeneralSBM" />
<property name="LOG_ERROR_HOME" value="/var/logs/GeneralSBM/error" />
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger[%line] - %msg %n</pattern>
</encoder>
</appender>
<!-- 文件输出 -->
<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- <file>${LOG_HOME}/app.log</file> -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 如果按天来回滚,则最大保存时间为60天,60天之前的都将被清理掉,这里的值与滚动策略模式有关 -->
<maxHistory>60</maxHistory>
<!-- 按照日期进行归档,并且对日志文件大小进行限制 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 设置文件大于100MB进行压缩归档 ,此时fileNamePattern要加%i -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger[%line] - %msg %n</pattern>
</encoder>
</appender>
<!-- ERROR文件输出 -->
<appender name="errorRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- <file>${LOG_HOME}/app.log</file> -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_ERROR_HOME}/app.error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 如果按天来回滚,则最大保存时间为60天,60天之前的都将被清理掉,这里的值与滚动策略模式有关 -->
<maxHistory>60</maxHistory>
<!-- 按照日期进行归档,并且对日志文件大小进行限制 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 设置文件大于100MB进行压缩归档 ,此时fileNamePattern要加%i -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger[%line] - %msg %n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- spring profile不同环境不同设置 -->
<springProfile name="dev,test">
<!-- 打印sql -->
<logger name="druid.sql" level="DEBUG" />
</springProfile>
<springProfile name="prod">
<logger name="druid.sql" level="INFO" />
</springProfile>
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="rollingFile" />
<appender-ref ref="errorRollingFile" />
</root>
</configuration>