如何为不同的Spring批处理作业编写多个日志文件? [英] How to write multiple log files for different Spring Batch Job?

查看:9
本文介绍了如何为不同的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆