SpringBoot默認(rèn)使用LogBack日志系統(tǒng),LogBack默認(rèn)將日志打印到控制臺(tái)上刁标。
默認(rèn)情況下會(huì)記錄ERROR-level颠通,WARN-level和INFO-level消息。
啟用調(diào)試模式膀懈,會(huì)打印很多無用信息顿锰,一般不設(shè)置:
application.properties配置debug=true
如何輸出日志到文件
application.properties配置如下:
logging.path=D:/log
logging.file=springboot.log
注意:
在windows下不會(huì)在D:/log下創(chuàng)建springboot.log,而是在項(xiàng)目根目錄下創(chuàng)建 springboot.log启搂。
如果想要在D:/log創(chuàng)建怎么辦呢硼控?
我們只需要設(shè)置logging.file=D:/log/springboot.log,logging.path無需做任何設(shè)置胳赌。
logging.file.max-size
設(shè)置文件大小牢撼,默認(rèn)為10M,達(dá)到限制后會(huì)切換一個(gè)新文件疑苫。
logging.file.max-history
以前日志文件歸檔大小熏版,只保留多久或多大的日志,如果不設(shè)置就會(huì)無限期歸檔捍掺。
logging.file.total-size-cap
日志歸檔的總大小撼短,當(dāng)日志存檔的總大小超過該閾值時(shí),將刪除備份挺勿。
如何設(shè)置日志級(jí)別
日志級(jí)別總共有TARCE < DEBUG < INFO < WARN < ERROR < FATAL 曲横,且級(jí)別是逐漸提供, 如果日志級(jí)別設(shè)置為INFO满钟,則意味TRACE和DEBUG級(jí)別的日志都看不到胜榔。
Spring Boot默認(rèn)級(jí)別就是INFO胳喷。
applicaition.properties配置(logging.level配置日志級(jí)別):
logging.level.root=INFO
root:即項(xiàng)目的所有日志。
使用package級(jí)別
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}——日志輸出時(shí)間
%thread——輸出日志的進(jìn)程名字夭织,這在Web應(yīng)用以及異步任務(wù)處理中很有用
%-5level——日志級(jí)別吭露,并且使用5個(gè)字符靠左對(duì)齊
%logger——日志輸出者的名字
%line——行號(hào)
%msg——日志消息
%n——平臺(tái)的換行符
自定義日志配置
logback:默認(rèn)加載logback-spring.xml,logback-spring.groovy尊惰,logback.xml讲竿,或者 logback.groovy;
Log4j: 默認(rèn)加載log4j-spring.xml弄屡,log4j.xml题禀;
JDK: 默認(rèn)加載logging.properties,都是類路徑下膀捷。
如果需要自定義文件:
logging.config=classpath:conf/xml/logback.xml # 用于配置外部logback.xml
實(shí)例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" />
<!-- 控制臺(tái)輸出 -->
<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>
<!-- 如果按天來回滾迈嘹,則最大保存時(shí)間為60天,60天之前的都將被清理掉全庸,這里的值與滾動(dòng)策略模式有關(guān) -->
<maxHistory>60</maxHistory>
<!-- 按照日期進(jìn)行歸檔秀仲,并且對(duì)日志文件大小進(jìn)行限制 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 設(shè)置文件大于100MB進(jìn)行壓縮歸檔 ,此時(shí)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>
<!-- 如果按天來回滾壶笼,則最大保存時(shí)間為60天神僵,60天之前的都將被清理掉,這里的值與滾動(dòng)策略模式有關(guān) -->
<maxHistory>60</maxHistory>
<!-- 按照日期進(jìn)行歸檔覆劈,并且對(duì)日志文件大小進(jìn)行限制 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 設(shè)置文件大于100MB進(jìn)行壓縮歸檔 保礼,此時(shí)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不同環(huán)境不同設(shè)置 -->
<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>