Spring启动多个日志文件 [英] Spring boot multiple log files

查看:95
本文介绍了Spring启动多个日志文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在带有"@ Slf4j"注释类的Spring引导项目中,对于某些类,我想登录到其他文件.但是不知道该怎么做.我有一个logback-spring.xml文件,该文件是从我的属性文件中引用的,如下所示:

In my Spring boot project with "@Slf4j" annotated classes, for certain classes I want to log to a different file. But couldn't figure out how to do that. I have one logback-spring.xml file, which is referenced from my properties file like this:

logging.config= path/to/logback-spring.xml
logging.file=myCurrentLogFile.log

我现在必须创建另一个logback-spring.xml文件吗?或者我可以在当前文件中对其进行配置,如果可以,那么我该如何选择何时使用哪个记录器.

Do I have to create another logback-spring.xml file now? or I can configure it in current file, and if then how can I choose which logger to use when.

推荐答案

只需添加另一个记录器和附加器. 例如,我使用了以下logback.xml

Just add another logger and appender. For example I used the following logback.xml

<property name="LOGS_HOME" value="/var/applications/myProject/applogs/" />

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

<appender name="FILE"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOGS_HOME}myProject_log.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
        </Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>${LOGS_HOME}myProject_log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>

<appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOGS_HOME}myProject_audit.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss};%msg%n
        </Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>${LOGS_HOME}myProject_audit.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>

<logger name="com.myCompany.myProject" level="info" additivity="false">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
</logger>

<logger name="audit-log" level="info" additivity="false">
    <appender-ref ref="FILE-AUDIT" />
    <appender-ref ref="STDOUT" />
</logger>

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

在代码中,您可以通过以下方式访问记录器:

In the code you can access the logger with:

private static Logger audit = LoggerFactory.getLogger("audit-log");

这将获取audit-log记录器并使用FILE-AUDIT附加程序.

This will get the audit-log logger and use FILE-AUDIT appender.

标准"附加程序可用于指定程序包中的任何类:

The "standart" appender is used with any class that is in the specified package:

private static Logger logger = LoggerFactory.getLogger(MyApplication.class);

这将使用<logger name="com.myCompany.myProject" level="info" additivity="false">,并且明显使用FILE附加程序.

This will use the <logger name="com.myCompany.myProject" level="info" additivity="false"> and obviosly the FILE appender.

这篇关于Spring启动多个日志文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆