在Spring Boot中,如何在2个不同的文件中打印2个类的日志

时间:2018-08-07 07:25:09

标签: spring-boot logging

我在application.properties中设置了logging.file = C:/usr/local/tomcat/logs/hib.log,并在类中进行了如下设置

private static final Logger logger = LogManager.getLogger(ChargeMasterController.class);

    logger.info("Total time taken for  is ---------------------------" + time  + " ms");

在提到的logging.file路径中,日志打印得很好。

现在我要在2个不同的类的2个不同文件中打印日志(在同一包中),如何在application.properties中设置2个logging.file

1 个答案:

答案 0 :(得分:2)

使用Spring提供的配置无法做到这一点。但是由于spring-boot-starter-logging默认使用Logback,因此您可以代替使用Logback配置并定义多个追加程序,例如:

<appender name="FILE1" class="ch.qos.logback.core.FileAppender">
    <file>log1.log</file>
    <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="FILE2" class="ch.qos.logback.core.FileAppender">
    <file>log2.log</file>
    <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="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>

此后,您可以将FILE1附加程序用于第一个类,将FILE2附加程序用于第二个类,并将STDOUT用于所有其他类。这可以通过定义记录器来完成:

<logger name="com.example.pkg.ClassName1" additivity="false" level="info">
    <appender-ref ref="FILE1" />
</logger>
<logger name="com.example.pkg.ClassName2" additivity="false" level="info">
    <appender-ref ref="FILE2" />
</logger>
<root level="INFO">
    <appender-ref ref="STDOUT" />
</root>

如您所见,根记录器旁边有两个记录器,分别为com.example.pkg.ClassName1com.example.pkg.ClassName2。这些名称应与应记录到单独文件的类的名称匹配。

additivity="false"对于确保不会将发送到log1.loglog2.log的日志也发送到控制台非常重要,因为它们也会与根记录器匹配。

此配置可以放在您的类路径的logback.xml文件中(例如src/main/resources)。另外,您也可以使用logging.config中的application.properties属性来配置位置。例如:

logging.config=file:/path/to/logback.conf

或者如果您想在类路径上使用任意位置:

logging.config=classpath:my/logback.conf