gpt4 book ai didi

Spring Boot 多个日志文件

转载 作者:IT老高 更新时间:2023-10-28 13:46:25 27 4
gpt4 key购买 nike

在我的带有“@Slf4j”注释类的 Spring Boot 项目中,对于某些类,我想登录到不同的文件。但无法弄清楚如何做到这一点。我有一个 logback-spring.xml 文件,它是从我的属性文件中引用的,如下所示:

logging.config= path/to/logback-spring.xml
logging.file=myCurrentLogFile.log

我现在必须创建另一个 logback-spring.xml 文件吗?或者我可以在当前文件中配置它,如果那么我该如何选择何时使用哪个记录器。

最佳答案

只需添加另一个记录器和附加器。例如,我使用了以下 logback.xml

<property name="LOGS_HOME" value="/var/applications/myProject/applogs/" />

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>

<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS_HOME}myProject_log.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</encoder>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOGS_HOME}myProject_log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>

<appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS_HOME}myProject_audit.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss};%msg%n
</Pattern>
</encoder>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOGS_HOME}myProject_audit.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>

<logger name="com.myCompany.myProject" level="info" additivity="false">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</logger>

<logger name="audit-log" level="info" additivity="false">
<appender-ref ref="FILE-AUDIT" />
<appender-ref ref="STDOUT" />
</logger>

<root level="error">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>

在代码中,您可以通过以下方式访问记录器:

private static Logger audit = LoggerFactory.getLogger("audit-log");

这将得到 audit-log记录器和使用 FILE-AUDIT追加器。

“标准”附加程序用于指定包中的任何类:

private static Logger logger = LoggerFactory.getLogger(MyApplication.class);

这将使用 <logger name="com.myCompany.myProject" level="info" additivity="false">显然是 FILE 附加程序。

关于Spring Boot 多个日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39103771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com