在Spring Boot中添加时间戳到日志文件?

时间:2016-04-13 10:49:36

标签: java spring properties timestamp logback

我目前在我的应用程序中使用Spring Boot,我知道它使用Logback作为其默认日志记录实现。

目前在我的applications.properties文件中,我有以下内容:

#some other properties

#logging details
logging.path= path/to/my/log/folder

这当前记录到我的输出文件夹中的文件:spring.log

如何更改此文件,使其包含创建时的时间戳和日期

例如 - “my-application-log-DATE-TIME.log”

3 个答案:

答案 0 :(得分:0)

在appender中,尝试添加:

<layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>      </layout>

答案 1 :(得分:0)

删除.properties文件样式配置并使用logback正确的一个 - logback.xml。 Spring Boot已为此做好充分准备!这是一个例子:

<property name="logPattern" value="%d %-5level %logger{35} - %msg%n"/>
<property name="logEncoding" value="UTF-8"/>
<property name="logDirectory" value="logs"/>

<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDirectory}/myapplication.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${logDirectory}/myapplication_%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>30MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
        <charset>${logEncoding}</charset>
        <pattern>${logPattern}</pattern>
    </encoder>
</appender>

<logger name="org.springframework" level="warn"/>

<root level="INFO">
    <appender-ref ref="fileAppender"/>
</root>

这不仅可以为日志文件添加时间戳,还可以帮助您进行日志轮换(例如,它会保留旧日志,直到达到一定的大小等)。

答案 2 :(得分:0)

你是以正确的方式去做的。使用Spring引导的property support来自定义application.properties文件。

    // application.properties file
app.name=appname
logging.path=logpath
logging.file=${appname}-{timestamp}.log

另一方面,在您的支持类中,您可以创建一个url帮助器来获取属性值:

    /**
 * Helper class to get configured urls.
 */
@Component
public class UrlHelper {

    @Inject
    private Environment env;

    private static final String LOGGING_TIMESTAMP = "{timestamp}";

private static String loggingFileUrlPattern;

/**
     * Initializes properties.
     */
    @PostConstruct
    public void initProperties() {

        loggingFileUrlPattern = env.getRequiredProperty("logging.file");
    }

/**
     * Formats the loggin Url pattern application property with the current
     * timestamp
     * 
     * @param timestamp
     *            current timestamp.
     * @return The complete logging file url.
     */

    public static String buildLoggingFileUrl(String timestamp) {
        return loggingFileUrlPattern.replace(LOGGING_FILE_URL, timestamp);
    }
}

希望它有所帮助!