SpringBoot快速集成Logback日志組件
前言
在前一節(jié)的分享中,慕歌向大家介紹了如何使用spring boot 實現(xiàn)簡單的郵寄發(fā)送服務,用于驗證碼服務或者是通知服務。如果大家有興趣,慕歌還想向大家進一步分享,如何在使用第三方服務,實現(xiàn)手機短信通知服務,就是那個我們每天都會使用到的短信驗證碼,通知服務。這一節(jié)慕歌想帶來spring boot日志系統(tǒng)的分享,以及慕歌自己的實現(xiàn)的簡易日志記錄,慕歌會將日志同時保存在文件和數據庫之中。
引入:
如果我們使用 logback 就無需額外引入依賴,在spring boot statrt 中已經默認集成了logback 日志。
<!-- logback-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
如果想要使用log4j2 日志需要排除默認日志,再引入,無需指定版本。
<!-- log4j2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</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>-->
配置:
引入日志依賴后,我們還需要指定日志的輸出格式,需要再resource中新建一個文件 logback.xml 。如果對于日志無特殊要求可直接參考我的日志配置。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路徑 -->
<property name="log.path" value="/www/wwwroo/logs/"/>
<!-- 日志輸出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
<!-- 控制臺輸出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系統(tǒng)日志輸出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 循環(huán)政策:基于時間創(chuàng)建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的歷史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 過濾的級別 -->
<level>INFO</level>
<!-- 匹配時的操作:接收(記錄) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配時的操作:拒絕(不記錄) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file>
<!-- 循環(huán)政策:基于時間創(chuàng)建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的歷史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 過濾的級別 -->
<level>ERROR</level>
<!-- 匹配時的操作:接收(記錄) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配時的操作:拒絕(不記錄) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 用戶訪問日志輸出 -->
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滾 daily -->
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的歷史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系統(tǒng)模塊日志級別控制 -->
<logger name="com.ewem" level="info"/>
<!-- Spring日志級別控制 -->
<logger name="org.springframework" level="warn"/>
<root level="info">
<appender-ref ref="console"/>
</root>
<!--系統(tǒng)操作日志-->
<root level="info">
<appender-ref ref="file_info"/>
<appender-ref ref="file_error"/>
</root>
<!--系統(tǒng)用戶操作日志-->
<logger name="sys-user" level="info">
<appender-ref ref="sys-user"/>
</logger>
</configuration>
這里的日志文件目錄由于是使用的linux ,配置格式就是從根目錄開始,需要換成你自己的日志輸出目錄。然后在配置中指定掃描路徑,使用我們D定義的日志格式:
# 日志配置
logging:
# 日志等級
level:
# 更換成你的目錄
channel.cert: info
org.springframework: warn
# 日志路徑
config: classpath:logback.xml
完成以下日志配置后,即可在我們開發(fā)的時候隨時打一個日志,用于錯誤排查。
開發(fā):
那么在真實的開發(fā)中,我們如何在一段代碼中引入日志呢。我們不妨可以將日志先看作最初學習的輸出語句。可以在如何地方輸出一條信息。日志與標準輸出的不同在于,日志具有等級:
- 【TRACE】:trace是一種很低的日志級別,一般不會使用。目前,我只有在SpringBoot的啟動之中,略微發(fā)現(xiàn)一些它的影子,表示的就是默認不打印的日志。
- 【DEBUG】:debug是一種調試程序的日志級別,一般用于程序開發(fā)過程中打印一些調試日志、運行信息,可以比較隨意的使用。
- 【INFO】:info是用來輸出程序的一些關鍵信息,強調業(yè)務邏輯的運行過程信息,不能隨便打印。
- 【WARN】:warn是用于輸出一些警告提示信息,一般是系統(tǒng)進入到一種可恢復的狀態(tài)時打印的信息,警告但不是嚴重錯誤。
- 【ERROR】:error是系統(tǒng)已經發(fā)生錯誤的事件,比如發(fā)生了異常,但是不想影響系統(tǒng)的正常運行。可以打印一些錯誤信息,提示開發(fā)者關注或者定位問題。
日志是打印在日志文件之中的,如果大量的打印會造成日志文件的驟增導致磁盤空間快速增長。但是,排查問題的時候,我們都盡可能希望日志級別可以足夠的細致。沒有問題的時候,我們希望日志文件可以盡量減少磁盤的占用。所以,如果我們可以做到動態(tài)地去控制日志級別,實現(xiàn)動態(tài)打印日志,那就可以完美解決上訴的需求。
/**
* 管理員
*/
@Slf4j
@RestController
@RequestMapping("/admin")
public class AdminUserController {
@Autowired
AdminUserService adminUserService;
@Autowired
AdminLogService adminLogService;
//用戶詳情
@SaCheckLogin
@RequestMapping("/searchOne")
public R searchOne(@RequestBody AdminUser adminUser){
AdminUser user = adminUserService.getById(adminUser.getId());
log.trace("info"+user);
log.info("info"+user);
log.debug("info"+user);
log.info("info"+user);
log.warn("info"+user);
return R.success(user);
}
}
在使用日志的時候不直接指定由logback 進行日志記錄,而使用slf4j 上層接口,進行日志的寫入。這樣即使,我們更換了日志系統(tǒng),并不會導致代碼中使用了舊日志系統(tǒng)的日志點報錯。
結語
到此這篇關于SpringBoot快速集成Logback日志組件的文章就介紹到這了,更多相關SpringBoot集成Logback日志組件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mybatis 動態(tài)SQL的幾種實現(xiàn)方法
這篇文章主要介紹了Mybatis 動態(tài)SQL的幾種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
SpringBoot和MybatisPlus實現(xiàn)通用Controller示例
本文主要介紹了SpringBoot和MybatisPlus實現(xiàn)通用Controller示例,只需創(chuàng)建實體類和mapper接口,就可以實現(xiàn)單表的增刪改查操作,具有一定的參考價值,感興趣的可以了解一下2025-03-03
Spring Security自定義登錄原理及實現(xiàn)詳解
這篇文章主要介紹了Spring Security自定義登錄原理及實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09
springboot實現(xiàn)郵箱發(fā)送(激活碼)功能的示例代碼
這篇文章主要為大家詳細介紹了如何利用springboot實現(xiàn)郵箱發(fā)送(激活碼)功能,文中的示例代碼簡潔易懂,有需要的小伙伴可以跟隨小編一起學習一下2023-10-10

