目前在春季啓動1.3中,我們只能將訪問日誌記錄到文件系統中的文件。有沒有什麼方法可以真正使用自定義記錄器(如log4j2)來記錄訪問日誌?如何在春季啓動時使用自定義記錄器記錄訪問日誌
我目前正在使用springow引導,但在檢查spring引導源代碼後,使用正在寫入文件的DefaultAccessLogReceiver初始化下流記錄器。如果可能的話,我想使用AccessLogHandler,並避免編寫一個記錄訪問的Web過濾器。
有沒有簡單的解決方法呢? (除了寫入請求)
目前在春季啓動1.3中,我們只能將訪問日誌記錄到文件系統中的文件。有沒有什麼方法可以真正使用自定義記錄器(如log4j2)來記錄訪問日誌?如何在春季啓動時使用自定義記錄器記錄訪問日誌
我目前正在使用springow引導,但在檢查spring引導源代碼後,使用正在寫入文件的DefaultAccessLogReceiver初始化下流記錄器。如果可能的話,我想使用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
}
}
Spring Boot沒有強制日誌依賴性,除了commons-logging API之外,其中有許多實現可供選擇。要使用Logback,您需要將其包含在內,並在類路徑中記錄一些公共日誌記錄的綁定。最簡單的方法是通過初學者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用於日誌記錄配置,但前提是其中一個位於類路徑中。如果您使用入門者poms來組裝依賴關係,那意味着您必須排除Logback,然後包含您選擇的Log4j版本。如果您沒有使用啓動器,那麼除了您選擇的Log4j版本之外,您還需要提供公共日誌記錄(至少)。
最簡單的路徑可能是通過初學者poms,即使它需要一些與排除,例如。在Maven的:
<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,單純依靠彈簧啓動起動log4j2而不是彈簧引導起動log4j的。
這是一個有趣的想法,從來沒有想過這個想法。 – Rowanto