java SLF4J和Logback:将记录器传播到自动连线服务
我对日志有点陌生,我已经开始了一个项目,我选择了Logback
我有以下logback.xml
配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="BARLOGGER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME:-/repository/logs}/bar.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME:-/repository/logs}/bar.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="BOOLOGGER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME:-/repository/logs}/boo.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME:-/repository/logs}/boo.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.foo.bar" level="debug" additivity="false">
<appender-ref ref="BARLOGGER" />
</logger>
<logger name="com.foo.boo" level="debug" additivity="false">
<appender-ref ref="BOOLOGGER" />
</logger>
<root level="error">
<appender-ref ref="STDOUT" />
</root>
</configuration>
我有两个不同包中的两个服务(Boo
和Bar
)。我已经为它们中的每一个配置了一个appender,这些服务的日志记录工作正常
这就是我面临的问题
这两个服务(Boo
和Bar
)都具有第三个服务(Tee
)的自动连线依赖项,没有为其定义附加器。Tee
服务位于com.foo.tee
我不希望这3个服务有一个唯一的日志,因为它们做不同的事情,在不同的时间运行
有没有办法将Tee
服务日志记录到Boo或Bar appender,具体取决于调用该服务的服务(Boo
/Bar
)
基本上,我想要实现的是
- 酒吧有一个发球台依赖项。如果Bar调用一个Tee方法,则该方法的日志只应写入Bar记录器
- Boo也有一个Tee依赖项。如果Boo调用一个Tee方法,则该方法的日志只应写入Boo logger
- Bar和Boo日志写入不同的文件,Tee日志只应附加到其“invocator”日志中
我希望这能为正在执行的操作提供上下文,因为Tee有第三个日志文件,因此很难跟踪调用的来源
谢谢
PS:我试图找到之前的答案,但我不知道我是用错误的关键字搜索,还是无法完成
共 (0) 个答案