我正在尝试从类中登录到两个不同的记录器。我有一个类并定义了两个方法,并尝试将消息从一个方法记录到一个日志文件,并从另一个方法记录到不同的日志文件。
这是我的代码:
insert into TServiceInstruments (column1, column2, column3)
values (1, 2, 3)
这是我的logback-spring文件:
private static final Logger logger = LoggerFactory.getLogger(SummaryService.class);
public void empSalInfo(){
logger.info("employee info.."); // this should log into SalaryLogAppender
}
public void empDeptInfo(){
logger.info("dept info"); // this should log into DeptLogAppender
}
答案 0 :(得分:1)
如果要写入不同的日志文件,首先需要使用不同的(文件)附加程序来分隔输出。
这是一个简单的logback-spring.xml,它提供了多个appender和相关的记录器:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="application.log"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
<appender name="oneAppender" class="ch.qos.logback.core.FileAppender">
<file>one.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="anotherAppender" class="ch.qos.logback.core.FileAppender">
<file>another.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<logger name="oneLogger" level="ALL" additivity="false">
<appender-ref ref="oneAppender" />
</logger>
<logger name="anotherLogger" level="ALL" additivity="false">
<appender-ref ref="anotherAppender" />
</logger>
</configuration>
(默认)root
记录器将所有常见的应用程序消息转发到公共&#34; application.log&#34;,例如应用程序启动消息等。
然后,有两个显式文件追加器(oneAppender
&amp; anotherAppender
)绑定到不同的文件(one.log
&amp; another.log
)。
至少有两个记录器(oneLogger
&amp; anotherLogger
)绑定到这些appender,它们的名称可以引用它们将某些消息传递给不同的日志文件。
使用该配置,您现在可以实现日志记录,最简单的方法是直接在业务层内创建两个单独的Logger
实例:
final Logger oneLogger = LoggerFactory.getLogger("oneLogger");
final Logger anotherLogger = LoggerFactory.getLogger("anotherLogger");
public void empSalInfo(){
oneLogger.info("employee info.."); // this should log into SalaryLogAppender
}
public void empDeptInfo(){
anotherLogger.info("dept info"); // this should log into DeptLogAppender
}
但是,由于这将是某种冗长且容易出错的问题,因此可以考虑使用Spring AOP拦截您的业务代码(如果它由Spring管理),以保持其对日志记录的关注。