使用Logback-test.xml为日志文件添加时间戳

9
目前,我的Spring-boot应用程序日志记录在一个名为myLog.log的文件中,这正常工作,但是我希望日志文件在结尾加上一个时间戳,并且每次运行时创建一个新文件
我已经尝试在下面显示的logback-test.xml文件中实现这一点,但是它只给我提供文件名:myLog.log 没有时间戳。
我该如何解决这个问题? Logback-test.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <logger name="org.springframework.web" level="INFO"/>

    <!-- Send debug messages to System.out -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- By default, encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS}  - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>path/to/my/file/mylog.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} - %msg%n</Pattern>
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <FileNamePattern>mylog.%i{yyyy-MM-dd_HH:mm:ss.SSS}}.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>2MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <logger name="com.my.package" level="INFO" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </logger>

    <!-- By default, the level of the root level is set to DEBUG -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>
1个回答

25
你可以像这样定义一个变量:

<timestamp key="myTimestamp" datePattern="yyyy-MM-dd'_'HH-mm-ss.SSS"/>
(注:不要在日期格式datePattern中使用冒号)
然后直接在您的appenderfile元素中使用它:
 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>path/to/my/file/mylog-${myTimestamp}.log</file>
 ...
 </appender>

或者在一个简单的 FileAppender 中:

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>path/to/my/file/mylog-${myTimestamp}.log</file>
    <encoder>
        <Pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} - %msg%n</Pattern>
    </encoder>
</appender>

谢谢,这个可以工作,但我必须用{myTimestamp}替换{timestamp}。然而,它会创建两个日志文件。我该怎么解决? - java123999
1
请看一下我以下的问题:https://dev59.com/b1oV5IYBdhLWcg3wCq8n - java123999
我的时间戳,当然要修复它。 - nyname00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接