如何以编程方式停止SiftingAppender

时间:2016-08-24 20:01:10

标签: scala logback slf4j

我是logback的新手,我正试图以编程方式停止SiftingAppender

这是我的追随者:

<appender name="FILE-APPENDER" class="ch.qos.logback.classic.sift.SiftingAppender">

    <!-- MDC value -->
    <discriminator>
        <key>fileName</key>
        <defaultValue>log_file</defaultValue>
    </discriminator>

    <sift>
        <appender name="ROLLING-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <append>true</append>
            <file>{fileName}.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!-- daily rollover. Make sure the path matches the one in the file element or else
                 the rollover logs are placed in the working directory. -->
                <fileNamePattern>${fileName}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <maxFileSize>1MB</maxFileSize>
                <maxHistory>30</maxHistory>
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>

            <encoder>
                <charset>UTF-8</charset>
                <pattern>[%p] [%d{yy/MM/dd HH:mm:ss}] %c [%X{akkaSource}] : %msg%n</pattern>
            </encoder>
        </appender>

    </sift>

</appender>

Root Logger:

<root level="INFO">
    <appender-ref ref="FILE-APPENDER"/>
    <appender-ref ref="ANOTHER-APPENDER"/>
</root>

在应用程序的某个时刻,我需要停止记录到文件,这是我的scala代码:

val context: LoggerContext = LoggerFactory.getILoggerFactory.asInstanceOf[LoggerContext]
val root = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME).asInstanceOf[Logger]
root.getAppender("FILE-APPENDER").stop()

代码执行没有问题,但我仍然可以在文件中看到日志。

如果我不使用SiftingAppender而只使用RollingFileAppender,则效果非常好。

这里有什么我想念的吗?

0 个答案:

没有答案