我在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
答案 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.ClassName1
和com.example.pkg.ClassName2
。这些名称应与应记录到单独文件的类的名称匹配。
additivity="false"
对于确保不会将发送到log1.log
或log2.log
的日志也发送到控制台非常重要,因为它们也会与根记录器匹配。
此配置可以放在您的类路径的logback.xml
文件中(例如src/main/resources
)。另外,您也可以使用logging.config
中的application.properties
属性来配置位置。例如:
logging.config=file:/path/to/logback.conf
或者如果您想在类路径上使用任意位置:
logging.config=classpath:my/logback.conf