iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0
佛心分享-SideProject30

從卡關到通關的Spring Boot 腦內風暴系列 第 27

凡走過需留下痕跡-Spring Boot 中的日誌管理

  • 分享至 

  • xImage
  •  

在開發及維護專案時,善用日誌將有助於提升除錯及維護效率。此篇介紹在Spring Boot當中要如何使用日誌進行記錄與管理。

Spring Boot預設日誌框架

Spring Boot預設是以Logback作為日誌框架,透過SLF4J(Simple Logging Facade for Java)的API紀錄日誌。

配置日誌等級

Spring Boot當中的application.properties(或application.yml)可以配置日誌等級。當有過多的日誌產生,會增加系統負擔,反而使日誌更難閱讀,因此,依據需求顯示日誌級別是非常重要的。
常見的日誌等級依據嚴重性由低到高依序是:TRACE→DEBUG→INFO→WARN→ERROR。
針對不同問題也能配給不同的等級,當發生錯誤時更能快速定位問題。

# application.properties
logging.level.com.example=DEBUG

使用SLF4J記錄日誌

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LogController {
    
    private static final Logger logger = LoggerFactory.getLogger(LogController.class);
    
    @GetMapping("/log")
    public String log() {
        logger.info("This is an info");
        logger.debug("This is a debug");
        logger.error("This is an error");
        return "logs for messages!";
    }
}

輸出格式與路徑配置

Spring Boot預設是將日誌輸出在控制台顯示,但一般來說,在專案開發時,會將日誌記錄成文件,便於查閱。透過下列配置,可設定日誌輸出的格式以及儲存路徑,也可以針對需求設定不同的log紀錄級別,甚至是日誌檔案大小都能切分設定:

  • application.properties設置
# 指定日誌輸出的文件名稱
logging.file.name=logs/spring-boot-log.log

# 日誌格式:加入時間戳、日誌等級及內容
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

# 只對某個package設置日誌等級
logging.level.com.example.service=DEBUG
logging.level.org.springframework.web=INFO
  • 檔案設置
<configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/spring-boot-log.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日誌文件每天進行輪替 -->
            <fileNamePattern>logs/spring-boot-log-%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 保留最近30天的日誌 -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</configuration>

透過日誌管理,可以有效追蹤程式執行狀況,並快速掌握問題除錯。在Spring Boot當中可以輕鬆處理日誌設置,更加靈活實現日誌管理應用。


上一篇
緩存與資料儲存的最佳夥伴-Redis
下一篇
從單元測試到集成測試
系列文
從卡關到通關的Spring Boot 腦內風暴30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言