springboot集成logback日志 通用logback.xml模板详解
生活随笔
收集整理的這篇文章主要介紹了
springboot集成logback日志 通用logback.xml模板详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先看Spring Boot中依賴的logback,log4j,slf4j相關Jar包
1.最簡單的默認打印控制臺日志?
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ImportDemoController {
Logger logger= LoggerFactory.getLogger(ImportDemoController.class);@Autowiredprivate User user;@Autowiredprivate ImportDemo importDemo;@Autowiredprivate User01 user01;@Autowiredprivate UserFactoryBean userFactoryBean;@Autowiredprivate UserLazy userLazy;@RequestMapping("/importDemo")public String demo() throws Exception {logger.info("ImportDemoController 開始>>>");importDemo.doSomething();user01.username = "user01";String s = user.username;String s1 = user01.username;String s4 = userFactoryBean.getObject().username;String s5=userLazy.username;logger.info("ImportDemoController 結束<<<");return "ImportDemo@SpringBoot " + s + " " + s1 + " " + s4+ " " + s5;}
}
注意需要引入:org.slf4j相關包。
?
2.修改日志級別
日志級別 trace<debug<info<warn<error<fatal
默認級別為info,默認打印info及其以上級別的日志,默認不打印debug日志,
public String demo() throws Exception {logger.debug("ImportDemoController 開始>>>");importDemo.doSomething();user01.username = "user01";String s = user.username;String s1 = user01.username;String s4 = userFactoryBean.getObject().username;String s5=userLazy.username;logger.debug("ImportDemoController 結束<<<");return "ImportDemo@SpringBoot " + s + " " + s1 + " " + s4+ " " + s5;}
修改Spring Boot配置文件即可打印debug日志
application.properties
logging.level.root=debug
logging.level設置日志級別,后面跟生效的區域,比如root表示整個項目,也可以設置為某個包下,也可以具體到某個類名(日志級別的值不區分大小寫)?https://www.cnblogs.com/yanguobin/p/11487667.html
logging.level.root=info就是默認的情況,你改為我上面那樣就打印出debug了,開發環境打印,線上是不允許的。
?
3.使用logback.xml配置文件實現更精細的配置
logback.xml和application.properties放在同一層目錄即可,這個logback.xml非常好,源自網絡,只要簡單修改存儲路徑和對應的包空間就可以直接在項目中使用了
<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置文件每隔1分鐘,就檢查更新 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false"><!-- 定義參數常量,便于后面直接用${name}來獲取value值 --><property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%-5level] %logger{50} - %msg%n"/><!--<property name="log.filePath" value="${catalina.base}/logs/webapps"/>--><property name="log.filePath" value="D:/logs/webapps"/><property name="log.maxHistory" value="30"/><!-- ch.qos.logback.core.ConsoleAppender 控制臺輸出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!-- 過去使用layout,現在都推薦使用encoder作用一:將日志信息轉換(格式化)為字符串作用二:然后寫入到文件中--><encoder><pattern>${log.pattern}</pattern></encoder></appender><!-- ch.qos.logback.core.rolling.RollingFileAppender 文件日志輸出到文件 --><!-- 1.打印debug級別日志的設置 --><appender name="debugAppender"class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 例如當天,也就是今天是2020-2-10,那么在這天生成的日志文件路徑為${log.filePath}/debug.log接著到了明天,也就是2019-2-11,這天生成的日志文件路徑為${log.filePath}/debug.log,但昨天2020-2-10,生成的日志文件路徑就變為${log.filePath}/debug/debug-2020-2-10.log.gz(壓縮文件) --><!-- 當天生成的日志文件的路徑 --><file>${log.filePath}/debug.log</file><!-- 設置基于時間(每天)的滾動策略,也就是將日志內容按照日期來寫入到相應的文件中--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 當天之前的每天生成的日志文件的路徑 --><fileNamePattern>${log.filePath}/debug/debug-%d{yyyy-MM-dd}.log.gz</fileNamePattern><!-- 最大歷史保存文件的數量,只保存最近30天的日志文件,超出的會被刪除--><maxHistory>${log.maxHistory}</maxHistory></rollingPolicy><!-- 過去使用layout,現在都推薦使用encoder作用一:將日志信息轉換(格式化)為字符串作用二:然后寫入到文件中--><encoder><pattern>${log.pattern}</pattern></encoder><!-- 過濾掉非debug級別的信息 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>debug</level><onMatch>ACCEPT</onMatch><!-- 作用是拒絕寫入所有與<level>不匹配的日志信息,也就是非debug級別的日志信息都不會被寫入到日志文件中 --><onMismatch>DENY</onMismatch></filter></appender><!-- 2.打印info級別日志的設置 --><appender name="infoAppender"class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 當天生成的日志文件的路徑 --><file>${log.filePath}/info.log</file><!-- 設置基于時間(每天)的滾動策略,也就是將日志內容按照日期來寫入到相應的文件中--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 當天之前的每天生成的日志文件的路徑 --><fileNamePattern>${log.filePath}/info/info-%d{yyyy-MM-dd}.log.gz</fileNamePattern><!-- 最大歷史保存文件的數量,只保存最近30天的日志文件,超出的會被刪除--><maxHistory>${log.maxHistory}</maxHistory></rollingPolicy><!-- 過去使用layout,現在都推薦使用encoder作用一:將日志信息轉換(格式化)為字符串作用二:然后寫入到文件中--><encoder><pattern>${log.pattern}</pattern></encoder><!-- 過濾掉非info級別的信息 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>info</level><onMatch>ACCEPT</onMatch><!-- 作用是拒絕寫入所有與<level>不匹配的日志信息,也就是非info級別的日志信息都不會被寫入到日志文件中 --><onMismatch>DENY</onMismatch></filter></appender><!-- 3.打印error級別日志的設置 --><appender name="errorAppender"class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 當天生成的日志文件的路徑 --><file>${log.filePath}/error.log</file><!-- 設置基于時間(每天)的滾動策略,也就是將日志內容按照日期來寫入到相應的文件中--><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 當天之前的每天生成的日志文件的路徑 --><fileNamePattern>${log.filePath}/error/error-%d{yyyy-MM-dd}.log.gz</fileNamePattern><!-- 最大歷史保存文件的數量,只保存最近30天的日志文件,超出的會被刪除--><maxHistory>${log.maxHistory}</maxHistory></rollingPolicy><!-- 過去使用layout,現在都推薦使用encoder作用一:將日志信息轉換(格式化)為字符串作用二:然后寫入到文件中--><encoder><pattern>${log.pattern}</pattern></encoder><!-- 過濾掉非error級別的信息 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>error</level><onMatch>ACCEPT</onMatch><!-- 作用是拒絕寫入所有與<level>不匹配的日志信息,也就是非error級別的日志信息都不會被寫入到日志文件中 --><onMismatch>DENY</onMismatch></filter></appender><!-- 監聽com.paopaoedu.springboot包下所有類產生的日志信息不設置additivity屬性,那么默認additivity = true,表示會繼承父級(在這里它的父級只有root一個),也就是會將日志信息也輸出在控制臺,但級別會覆蓋父級的級別,也就是在控制臺會輸出debug級別及以上的日志信息 --><logger name="com.paopaoedu.springboot" level="debug"><!-- 表示按照debugAppender的設置去打印日志 --><appender-ref ref="debugAppender"/><!-- 表示按照infoAppender的設置去打印日志 --><appender-ref ref="infoAppender"/><!-- 表示按照errorAppender的設置去打印日志 --><appender-ref ref="errorAppender"/></logger><!-- 也是一種<logger>,是所有<logger>的父級 --><!-- 不設置additivity屬性,或者設置additivity = true的<logger>,會繼承root的子標簽<appender-ref ref="console" />的設置,將它自己設置的level屬性級別及以上的日志打印到控制臺 --><root level="info"><!-- 表示按照console的設置去輸出日志到控制臺 --><appender-ref ref="console"/></root>
</configuration>
我的配置是寫在D盤log目錄下,可以根據需要設置。?
總結
以上是生活随笔為你收集整理的springboot集成logback日志 通用logback.xml模板详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个含蓄伤感个性签名
- 下一篇: SpringBoot condition