今天小編就爲大家分享一篇關於Spring Boot整合logback一個簡單的日誌集成架構,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
一、業務需求
在項目開發和運維過程中需要通過日誌來分析問題,解決問題以保證項目的正常運行。通過SpringBoot自帶的日誌管理相對比較簡單,已無法滿足日常的運維需求,需要對日誌文件進行分時分類管理,剛好通過學習接觸到了logback日誌系統。因此便決定將其加入到項目框架之中。
二、logback簡介
至於簡介,可自行網上查閱相關文檔文獻,這裏不做詳細描述,畢竟不是本文主要目的。只需理解它很好的實現了slf4j,是log4j的再發展即可。
三、具體實施方案(僅供參考)
1、引入依賴包
其實不需要引入任何依賴,Spring Boot 都爲我們做好了(不得不感嘆技術的強大與發展之快,不管是好是壞,可以很好的提高開發效率)。
2、配置文件
特別說明:這裏logback.xml不是在默認的 src/main/resources 目錄下因此需要在application.properties裏配置路徑,由於項目是通過Spring Cloud Config管理的配置文件,但是配置內容都一樣,只需在配置文件中加入以下配置即可:
logging.config=classpath:log/logback.xml
2.1 屬性文件
\src\main\resources\log\logback.properties
說明:定義日誌輸出位置、文件大小、保存時間和日誌級別。
此文件也可通過Spring Cloud Config管理,這裏不做詳細說明了,解題思路可以參看《Servlet+MyBatis項目轉Spring Cloud微服務,多數據源配置修改建議》https://www.jb51.net/article/154043.htm
logback.path=. logback.maxFileSize=50MB logback.maxHistory=30 logback.level=INFO
2.2 xml文件
\src\main\resources\log\logback.xml
說明:可看文件中註釋,根據需求做相應調整。
<?xml version="1.0" encoding="UTF-8"?> <!-- 日誌級別從低到高分爲TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設置爲WARN,則低於WARN的信息都不會輸出 --> <!-- scan:當此屬性設置爲true時,配置文件如果發生改變,將會被重新加載,默認值爲true --> <!-- scanPeriod:設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘。 --> <!-- debug:當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false。 --> <configuration scan="true" scanPeriod="10 seconds"> <property resource="log/logback.properties" /> <!--輸出到控制檯--> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <!--此日誌appender是爲開發使用,只配置最底級別,控制檯輸出的日誌級別是大於或等於此級別的日誌信息--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>info</level> </filter> <encoder> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度,%line:行號,%msg:日誌消息,%n是換行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}] - %msg%n</pattern> <!-- 設置字符集 --> <charset>UTF-8</charset> </encoder> </appender> <!--輸出到文件--> <!-- 時間滾動輸出 level爲 ${logback.level} 日誌 --> <appender name="STDOUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在記錄的日誌文件的路徑及文件名 --> <file>${logback.path}/log_${logback.level}.log</file> <!--日誌文件輸出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}] - %msg%n</pattern> <charset>UTF-8</charset> <!-- 設置字符集 --> </encoder> <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 日誌歸檔 --> <fileNamePattern>${logback.path}/${logback.level}/log-${logback.level}-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${logback.maxFileSize}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日誌文件保留天數--> <maxHistory>${logback.maxHistory}</maxHistory> </rollingPolicy> <!-- 此日誌文件只記錄${logback.level}級別的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>${logback.level}</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- <logger>用來設置某一個包或者具體的某一個類的日誌打印級別、 以及指定<appender>。<logger>僅有一個name屬性, 一個可選的level和一個可選的addtivity屬性。 name:用來指定受此logger約束的某一個包或者具體的某一個類。 level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 還有一個特俗值INHERITED或者同義詞NULL,代表強制執行上級的級別。 如果未設置此屬性,那麼當前logger將會繼承上級的級別。 addtivity:是否向上級logger傳遞打印信息。默認是true。 --> <!--<logger name="org.springframework.web" level="info"/> <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>--> <!-- root節點是必選節點,用來指定最基礎的日誌輸出級別,只有一個level屬性 level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 不能設置爲INHERITED或者同義詞NULL。默認是DEBUG 可以包含零個或多個元素,標識這個appender將會添加到這個logger。 --> <root level="${logback.level}"> <appender-ref ref="CONSOLE" /> <appender-ref ref="STDOUT" /> </root> <!--開發環境:打印控制檯--> <!-- <springProfile name="dev"> <logger name="team.biteeny" level="debug"/> </springProfile>--> <!--生產環境:輸出到文件--> <!--<springProfile name="pro">--> <!--<root level="info">--> <!--<appender-ref ref="CONSOLE" />--> <!--<appender-ref ref="DEBUG_FILE" />--> <!--<appender-ref ref="INFO_FILE" />--> <!--<appender-ref ref="ERROR_FILE" />--> <!--<appender-ref ref="WARN_FILE" />--> <!--</root>--> <!--</springProfile>--> </configuration>
通過以上步驟即可完成logback日誌系統的簡單集成,可以做到分時分文件大小以及備份保留時間等日誌的輸出管理。
如果想需要調試輸出一些日誌信息,只需在相應的類中加入類代碼即可:
private static final Logger log = LoggerFactory.getLogger(ClassName.class); // 需要輸出的日誌位置 log.info("日誌信息"); log.error("日誌信息"); ……
四、小結
以上只是對日誌系統的簡單應用,這其中的妙處可能還沒有完全體會,把實施過程記錄於此,希望拋磚引玉爲大家提供一條解題思路。
有不到之處請大家前來指正,把技術死磕到底!
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對神馬文庫的支持。如果你想了解更多相關內容請查看下面相關鏈接