Logback 是 Log4j 的作者的另一個開源日誌元件,與 Log4j 相比,Logback 重新了核心,使它的效能提升了很多,大約是 Log4j 的 10 倍,同時佔用更小的記憶體,並且完整的實現了 SLF4J API 是你可以很方便的切換日誌框架。
SpringBoot 預設整合了 Logback,可以開箱即用,對於中小型專案,個人更傾向於推薦使用 Logback。
使用示例
public class MyClass {
private static final Logger logger = LoggerFactory.getLogger(MyClass.class);
public void someMethod() {
logger.info("This is an info log");
logger.error("This is an error log");
}
}
在 src/main/resources 目錄下建立一個名為 logback.xml 或 logback-spring.xml 的檔案,並在其中定義滾動策略
<configuration>
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--
${LOG_PATH:logs} 這樣的配置使用了 Spring Boot 的屬性佔位符語法。
這個語法的含義是,如果存在名為 LOG_PATH 的環境變數,則使用該環境變數的值作為日誌路徑;
如果不存在 LOG_PATH 環境變數,則使用預設值 logs。
在 Spring Boot 中,如果沒有顯式地為屬性指定值,那麼會使用預設值。
在這個例子中,預設值為 logs,所以如果沒有在其他地方顯式地設定 LOG_PATH 環境變數,
日誌檔案將會被放置在專案根路徑下的 logs 資料夾中。
-->
<!-- 日誌檔名 -->
<file>${LOG_PATH:logs}/${LOG_FILE:application_name}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 觸發滾動策略時重新命名格式 -->
<fileNamePattern>${LOG_PATH:logs}/${LOG_FILE:myapplication}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 日誌檔案保留的最大數量 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<!-- 日誌輸出格式 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="fileAppender" />
</root>
</configuration>