如何为不同的Spring批处理作业编写多个日志文件? [英] How to write multiple log files for different Spring Batch Job?
本文介绍了如何为不同的Spring批处理作业编写多个日志文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我开发了一个包含多个作业的Spring Batch项目。
我的目的是将这些作业的日志写入单独的文件中。例如,当作业1启动时,所有事件都记录到job_1.log,当作业2启动时,其事件记录到job_2.log,依此类推。
在我的工作配置中,我使用了:
private static final Logger logger = LoggerFactory.getLogger(Job1.class);
,我还尝试按照link的指示配置logback.xml。
但是,我不知道如何将MDC放入Spring Batch(MDC .put("logFileName", "Job1"
);
使用Spring Batch时有没有更好的方法来解决我的问题?
推荐答案
我已经使用Log Back实现了这一点&;解决方案与Spring Batch无关,只与Spring Boot有关。
首先,我在Logback配置文件中为每个作业定义了单独的记录器,如下所示
`
<include resource="org/springframework/boot/logging/logback/base.xml" />
<property name="LOG_PATH" value="${LOG_DIR}" />
<timestamp key="timestamp-by-second" datePattern="yyyyMMdd'T'HHmmss" />
<appender name="Console-Appender" class="ch.qos.logback.core.ConsoleAppender">
<layout>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n
</pattern>
</layout>
</appender>
<appender name="Job1"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/Job1.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${LOG_PATH}/Job1.%i.log
</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>600</maxIndex>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n
</pattern>
<outputPatternAsHeader>true</outputPatternAsHeader>
</encoder>
</appender>
<appender name="Job2"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/Job2.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${LOG_PATH}/Job2.%i.log
</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>600</maxIndex>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n
</pattern>
</encoder>
</appender>
<logger name="Job1Logger" level="info" additivity="false">
<appender-ref ref="Job1" />
</logger>
<logger name="Job2erLogger" level="info" additivity="false">
<appender-ref ref="Job2" />
</logger>
<root>
<appender-ref ref="Console-Appender" />
</root>
`
然后,您需要做的不是-private static final Logger logger = LoggerFactory.getLogger(Job1.class);
,private static final Logger logger = LoggerFactory.getLogger("Job1Logger")
这篇关于如何为不同的Spring批处理作业编写多个日志文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文