[英]Creating multiple log files of different content with log4j
有沒有辦法配置 log4j 以便它向不同的 appender 輸出不同級別的日志記錄?
我正在嘗試設置多個日志文件。 主日志文件將捕獲所有類的所有 INFO 及以上消息。 (在開發中,它將捕獲所有 DEBUG 及以上消息,並針對特定類進行 TRACE。)
然后,我想要一個單獨的日志文件。 該日志文件將捕獲特定類子集的所有調試消息,並忽略任何其他類的所有消息。
有沒有辦法得到我所追求的?
這應該讓你開始:
log4j.rootLogger=QuietAppender, LoudAppender, TRACE
# setup A1
log4j.appender.QuietAppender=org.apache.log4j.RollingFileAppender
log4j.appender.QuietAppender.Threshold=INFO
log4j.appender.QuietAppender.File=quiet.log
...
# setup A2
log4j.appender.LoudAppender=org.apache.log4j.RollingFileAppender
log4j.appender.LoudAppender.Threshold=DEBUG
log4j.appender.LoudAppender.File=loud.log
...
log4j.logger.com.yourpackage.yourclazz=TRACE
也許像這樣?
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- general application log -->
<appender name="MainLogFile" class="org.apache.log4j.FileAppender">
<param name="File" value="server.log" />
<param name="Threshold" value="INFO" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
</layout>
</appender>
<!-- additional fooSystem logging -->
<appender name="FooLogFile" class="org.apache.log4j.FileAppender">
<param name="File" value="foo.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/>
</layout>
</appender>
<!-- foo logging -->
<logger name="com.example.foo">
<level value="DEBUG"/>
<appender-ref ref="FooLogFile"/>
</logger>
<!-- default logging -->
<root>
<level value="INFO"/>
<appender-ref ref="MainLogFile"/>
</root>
</log4j:configuration>
因此,所有信息消息都寫入 server.log; 相比之下, foo.log 只包含 com.example.foo 消息,包括調試級別的消息。
我有這個問題,但有一個轉折 - 我試圖將不同的內容記錄到不同的文件中。 我有關於 LowLevel 調試日志和 HighLevel 用戶日志的信息。 我希望 LowLevel 只訪問一個文件,HighLevel 訪問一個文件和一個 syslogd。
我的解決方案是配置 3 個 appender,然后像這樣設置日志記錄:
log4j.threshold=ALL
log4j.rootLogger=,LowLogger
log4j.logger.HighLevel=ALL,Syslog,HighLogger
log4j.additivity.HighLevel=false
我很難弄清楚的部分是“log4j.logger”可以列出多個附加程序。 我試圖一次做一行。
希望這在某些時候可以幫助某人!
對於主日志文件/附加程序,設置一個.Threshold = INFO
以將附加程序中實際記錄的內容限制為 INFO 及以上,無論記錄器是否啟用了調試、跟蹤等。
至於捕獲 DEBUG 以及除此之外的任何內容……您可能必須編寫自定義附加程序。
但是我建議不要這樣做,因為這聽起來會使故障排除和分析變得非常困難:
演示鏈接: https : //github.com/RazvanSebastian/spring_multiple_log_files_demo.git
我的解決方案基於使用spring-boot-starter-log4j
XML 配置。 該示例是使用spring-boot-starter
的基本示例,兩個 Logger 寫入不同的日志文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.