簡體   English   中英

如何將滾動文件記錄器添加到 SpringBoot?

[英]How to add a rolling file logger to SpringBoot?

我在這里使用這個非常好的示例 學習 SpringBoot。

但是我想學習如何添加到這個項目中的一件事是RollingFileAppender

在我以前的項目中,我總是這樣做:

1)添加了這些依賴項

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
</dependency>

2)在src/main/resources文件夾下添加如下文件log4j.properties

# Root logger option
log4j.rootLogger=INFO, stdout, loggerId

log4j.appender.loggerId=org.apache.log4j.RollingFileAppender  
log4j.appender.loggerId.layout=org.apache.log4j.PatternLayout  
log4j.appender.loggerId.layout.ConversionPattern=%d [%t] %-5p (%F:%L) - %m%n  
log4j.appender.loggerId.File=logs/app.log
log4j.appender.loggerId.MaxFileSize=100MB
log4j.appender.loggerId.MaxBackupIndex=30

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Silence unnecessary logs
log4j.logger.net.schmizz=OFF
log4j.logger.io.javalin=OFF
log4j.logger.net.dv8tion.jda.core.requests=OFF

3)在代碼中我可以調用記錄器:

private Logger LOG = LoggerFactory.getLogger(<class>)

(...)

LOG.info("logging a message")

這會將日志拋出到控制台,以及一個名為logs/app.log的滾動文件,最大大小為 100MB(如屬性文件中所定義)。

這樣做的正確方法是什么,在現代 SpringBoot 項目中,例如我在 GitHub 中鏈接的項目,可能使用 SpringBoot 附帶的記錄器?

謝謝!

登錄 Spring 引導與普通 Java 項目沒有根本不同。 Spring Boot 使用 Commons Logging 進行所有內部日志記錄,但保持底層日志實現打開。 為 Java Util Logging、Log4J2 和 Logback 提供了默認配置。 在每種情況下,記錄器都預先配置為使用控制台 output 以及可選文件 output 也可用。 默認情況下,如果您使用“Starters”,則使用 Logback 進行日志記錄。 1

如果您想堅持使用 Log4J2,則必須排除默認的 Logback 依賴項並包含 Log4J2:

<!-- exclude logback , add log4j2 -->
<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-log4j2</artifactId>
</dependency>

然后在src/main/resources中添加一個名為log4j2.xml或 ( log4j2.properties ) 的新文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="loggerId" class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="logs/app.log"/>
        <param name="MaxBackupIndex" value="30"/>
        <param name="MaxFileSize" value="100MB"/>
        <layout class="org.apache.log4j.PatternLayout  ">
            <param name="ConversionPattern" value="%d [%t] %-5p (%F:%L) - %m%n"/>
        </layout>
    </appender>
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
        </layout>
    </appender>
    <logger name="io.javalin">
        <level value="OFF"/>
    </logger>
    <logger name="net.dv8tion.jda.core.requests">
        <level value="OFF"/>
    </logger>
    <logger name="net.schmizz">
        <level value="OFF"/>
    </logger>
    <root>
        <level value="INFO"/>
        <appender-ref ref="stdout"/>
        <appender-ref ref="loggerId"/>
    </root>
</configuration>

欲了解更多信息, baeldung.com是我的最佳去處,可以獲得關於如何做這些事情的中肯教程。 由於您專門詢問有關 Rolling File Appenders 的建議,我推薦A Guide to Rolling File Appenders 還有一篇更通用的文章Spring Boot 中的 Logging

就個人而言,我喜歡使用像@Slf4j這樣的Lombok 注釋來擺脫日志樣板並防止復制和粘貼錯誤。

上代碼!

暫無
暫無

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

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