如何动态更改回退变量(文件名)?

时间:2018-12-04 16:06:37

标签: java logging logback

我目前正在开发一个Spring-boot批处理应用程序,该应用程序可以检测并读取新文件。一切工作正常,但日志文件名有问题。 关键是,必须在批处理运行时动态创建每个日志的文件名(每个文件一个),而且我不知道如何在Logback中动态更改日志的文件名。

这是我目前的登录信息($ {TECH}是我要更改的内容):

<configuration debug="false" scan="true" scanPeriod="30 seconds">
    <springProperty scope="context" name="directory.log.tech" source="bpa.batch.directory.log.technique"/>
    <appender name="TECHNIQUE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${directory.log.tech}\%d{yyyyMMdd}.${TECH}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <logger name="fr.hm.bpa.log.LogTechnique" level="TRACE">
        <appender-ref ref="TECHNIQUE" />
    </logger>
</configuration>

有人可以解释在我的代码运行时如何进行更改吗?预先感谢。

1 个答案:

答案 0 :(得分:0)

您可能想看一看内置在logback中的Sifting File Appender

从文档中:

顾名思义,SiftingAppender可用于分隔(或 sift)根据给定的运行时属性进行日志记录。例如, SiftingAppender可以根据用户分开记录事件 会话,以便由不同用户生成的日志进入 不同的日志文件,每个用户一个日志文件。