控制台和文件追加器正在工作,但使用slf4j时基于日期的日志记录无法正常工作

时间:2016-02-25 12:02:40

标签: java slf4j

首先来解决问题。我可以在控制台和文件中看到日志,但我想每天创建一个日志文件并进行登录。但我无法在我的日志记录配置文件中提到这一点。 以下是我的logback.xml;

<configuration>

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>app.log</file>
    <append>true</append>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
        <maxHistory>30</maxHistory>
    </rollingPolicy>

    <encoder>
        <pattern>%date{yyyy-MM-dd} %X{akkaTimestamp} %-5level[%thread] %logger{1} - %msg%n</pattern>
    </encoder>
</appender>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <!--<pattern>%X{akkaTimestamp} %-5level[%thread] %logger{0} - %msg%n</pattern>-->
        <pattern>%date{yyyy-MM-dd} %d{HH:mm:ss.SSS} %-5level[%thread] %logger{0} - %msg%n</pattern>
    </encoder>
</appender>


<root level="DEBUG">
    <appender-ref ref="FILE"/>
    <appender-ref ref="STDOUT"/>
</root>

以下是执行一些日志记录的java代码;

private static final Logger log = LoggerFactory.getLogger(NetworkServer.class); 

log.info(&#34;记录&#34;);

在这方面,我们将不胜感激。如果还有其他事情要做,请告诉我。

1 个答案:

答案 0 :(得分:0)

设置看起来没问题。

请注意,通过设置file属性,当前文件将被命名为app.log(没有任何扩展名)。但是如果你将它保持运行直到第二天,那么应该将其存档(并在过程中获取日期戳),并以app.log开始新的日志。或者您可以删除file设置以使活动日志也加上时间戳(这也可以避免在翻转期间重命名时出现潜在问题)。