我對記錄很陌生,而且我已經開始了一個我選擇了Logback的項目。SLF4J和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>
我有2個服務(Boo
和Bar
),兩種不同的封裝。我爲他們每個人配置了一個appender,並且這些服務的日誌記錄工作正常。
這是我面臨的問題。
這兩種服務(Boo
和Bar
)都具有第三個服務(Tee
)的自動佈線依賴關係,沒有定義appender。 Tee
服務位於com.foo.tee
我不想爲3個服務有獨特的日誌,因爲他們做不同的事情,並在不同的時間運行。
有沒有辦法將服務日誌記錄到Boo或Bar appen,具體取決於哪種服務(Boo
/Bar
)稱爲此服務?
基本上,我想實現的是
- 酒吧有一個三通的依賴。如果Bar調用Tee方法,該方法的日誌記錄應該只寫入Bar記錄器
- Boo也有Tee依賴關係。如果噓調用一個三通方法,該方法的記錄應寫入噓記錄儀只有
- 酒吧和噓聲日誌寫入到不同的文件,三通記錄應該只被追加到它的「調用器」登錄
我希望這樣做可以使正在執行的操作具有上下文,因爲具有第三個Tee日誌文件使得難以追蹤來自何處的呼叫。
謝謝! PS:我試圖找到一個以前的答案,但我不知道我是否用錯誤的關鍵字搜索,或者如果這不能完成。
不確定發生了什麼事情,但是如果您將lombok安裝到您的項目中,那麼您只需使用@ Slf4j就可以獲得記錄器的註釋類。看看它,祝你好運。 – Sarief
@Sarief有點矯枉過正,因爲它只替換一行'private final Logger log = LoggerFactory.getLogger(getClass())' – OrangeDog
@OrangeDog也許,但對我來說,它就像是:install and use。也沒有必要爲thsi線,因爲它在我看來是矯枉過正:D – Sarief