有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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>

我有两个不同包中的两个服务(BooBar)。我已经为它们中的每一个配置了一个appender,这些服务的日志记录工作正常

这就是我面临的问题

这两个服务(BooBar)都具有第三个服务(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) 个答案