簡體   English   中英

如何使用自定義記錄器在spring boot中記錄訪問日志

[英]How to use custom logger to log access log in spring boot

目前在spring boot 1.3中,我們只能將訪問日志記錄到文件系統中的文件中。 有沒有辦法實際使用自定義記錄器(如log4j2)來記錄訪問日志?

我目前正在使用帶有spring boot的下載,但是在檢查了spring boot源代碼之后,使用DefaultAccessLogReceiver初始化了underow logger,它正在寫入文件。 我想盡可能使用AccessLogHandler,並避免編寫記錄訪問權限的Web過濾器。

這有什么簡單的方法嗎? (寫拉取請求除外)

這種硬編碼因此不可定制的問題的一個技巧是隱藏類以使用具有相同包和名稱的新類。 您所要做的就是提供一個基於log4j的DefaultAccessLogReceiver ,並確保它可以在轉發器庫中的類加載器之前進行搜索。

package io.undertow.server.handlers.accesslog;

public class DefaultAccessLogReceiver implements AccessLogReceiver {

    public void logMessage(final String message) {
        // TODO: log with log4j
    }
}

除了commons-logging API之外,Spring Boot沒有強制的日志記錄依賴性,其中有許多實現可供選擇。 要使用Logback,您需要包含它,以及在類路徑上記錄commons的一些綁定。 最簡單的方法是通過啟動器poms,它們都依賴於spring-boot-starter-logging。 對於Web應用程序,您只需要spring-boot-starter-web,因為它依賴於日志記錄啟動器。 例如,使用Maven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Spring Boot有一個LoggingSystem抽象,它試圖根據類路徑的內容配置日志記錄。 如果Logback可用,則它是第一選擇。

Spring Boot還支持Log4j或Log4j 2進行日志記錄配置,但前提是其中一個在類路徑中。 如果您使用starter poms來組合依賴項,則意味着您必須排除Logback,然后包含您選擇的Log4j版本。 如果您沒有使用啟動器poms,那么除了選擇的Log4j版本之外,還需要提供commons-logging(至少)。

最簡單的路徑可能是通過啟動器poms,即使它需要在Maven中使用排除,.eg進行一些抖動:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</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-log4j</artifactId>
</dependency>

要使用Log4j 2,只需依賴spring-boot-starter-log4j2而不是spring-boot-starter-log4j。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM