如何将滚动文件记录器添加到 Spring Boot?
How to add a rolling file logger to SpringBoot?
我正在使用这个非常好的示例学习 SpringBoot here。
但是我想学习如何添加到这个项目中的一件事是 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(如属性文件中所定义)。
在像我在 GitHub 上面链接的现代 SpringBoot 项目中,可能使用 SpringBoot 附带的记录器,这样做的正确方法是什么?
谢谢!
登录 Spring Boot 与普通 Java 项目没有根本区别。 Spring Boot 将 Commons Logging 用于所有内部日志记录,但将底层日志实现保持打开状态。为 Java Util Logging、Log4J2 和 Logback 提供默认配置。在每种情况下,记录器都预先配置为使用控制台输出,同时还提供可选的文件输出。默认情况下,如果您使用“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 is my goto place for good to-the-point tutorials on how to do this stuff. Since you're asking specifically for advice on Rolling File Appenders, I recommend A Guide to Rolling File Appenders. There's also a more generic article on Logging in Spring Boot。
就个人而言,我喜欢像 @Slf4j
一样使用 Lombok annotations 来摆脱日志样板并防止复制和粘贴错误。
代码开启!
我正在使用这个非常好的示例学习 SpringBoot here。
但是我想学习如何添加到这个项目中的一件事是 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(如属性文件中所定义)。
在像我在 GitHub 上面链接的现代 SpringBoot 项目中,可能使用 SpringBoot 附带的记录器,这样做的正确方法是什么?
谢谢!
登录 Spring Boot 与普通 Java 项目没有根本区别。 Spring Boot 将 Commons Logging 用于所有内部日志记录,但将底层日志实现保持打开状态。为 Java Util Logging、Log4J2 和 Logback 提供默认配置。在每种情况下,记录器都预先配置为使用控制台输出,同时还提供可选的文件输出。默认情况下,如果您使用“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 is my goto place for good to-the-point tutorials on how to do this stuff. Since you're asking specifically for advice on Rolling File Appenders, I recommend A Guide to Rolling File Appenders. There's also a more generic article on Logging in Spring Boot。
就个人而言,我喜欢像 @Slf4j
一样使用 Lombok annotations 来摆脱日志样板并防止复制和粘贴错误。
代码开启!