进程运行时写入日志文件

时间:2018-10-10 11:50:56

标签: java log4j2

可能很明显,这就是为什么我找不到此问题的答案...如何在程序运行时如何将其写入日志文件。我正在将log4j-API与以下log4j2.xml一起使用:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
    <Properties>
        <Property name="log-path">./logs/</Property>
    </Properties>
    <Appenders>
        <RollingFile name="fileLogger" fileName="${log-path}/test-${date:dd-MM-yyyy}.log"
                 filePattern="${log-path}/test-%d{dd-MM-yyyy}%i.log">
        <PatternLayout>
            <pattern>[%-5level] %d{dd-MM-yyyy HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            <SizeBasedTriggeringPolicy size="100 MB"/>
        </Policies>
        <DefaultRolloverStrategy max="4"/>
    </RollingFile>

    <Console name="console" target="SYSTEM_OUT">
        <PatternLayout pattern="[%-5level] %d{dd-MM-yyyy HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
    </Console>
</Appenders>
<Loggers>
    <Logger name="net.wunds" level="all" additivity="true">
        <appender-ref ref="fileLogger"/>
    </Logger>
</Loggers>

日志记录本身可以正常工作,我也可以在控制台中看到日志,但是仅在终止程序时更新日志文件。能否请人告诉我为什么会这样?我很绝望...

1 个答案:

答案 0 :(得分:3)

您应该在RollingFile上设置InstantFlush = true。

请参见Log4j Appenders