簡體   English   中英

如何配置 log4j 以使用 JULAppender 將日志事件發送到 java.util.logging?

[英]How do I configure log4j to send log events to java.util.logging using JULAppender?

我熟悉 java.util.logging (JUL) 框架,我廣泛使用它。 最近,我開始使用一個通過 log4j 進行日志記錄的庫。 當我啟動我的應用程序時,我現在會在控制台上打印以下內容:

log4j:WARN No appenders could be found for logger (com.example.thirdparty.Library).
log4j:WARN Please initialize the log4j system properly.

看來 log4j 對此有一個解決方案: JULAppender ,它將使用 log4j 記錄的所有內容發送到我使用的日志記錄框架。

我找不到任何向我展示如何配置 log4j 以使用此 appender 的示例。

配置 log4j 的標准方法是在類路徑的根目錄中創建log4j.xml 以下是為 JULAppender 配置的該文件的內容:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="jul" class="org.apache.log4j.JulAppender"> 
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" value="%d %-5p %c - %m%n "/> 
        </layout> 
    </appender> 
    <root> 
        <priority value="all" /> 
        <appender-ref ref="jul" /> 
    </root>  
</log4j:configuration>

JULAppender的實現(順便說一句,可以在這里下載),現在已經很老了(從 2008 年開始),目標是 JDK 1.4 和 log4j 版本 1.2.15。

如果您使用 log4j 2.0 版(及更高版本),一個簡單的解決方案是使用 log4j 的SLF4J appender記錄所有消息,而后者設置為使用java.util.logging作為其底層實現。

如果您使用 maven,只需在<dependencies>段落中包含以下內容:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-to-slf4j</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jdk14</artifactId>
    <version>1.7.7</version>
</dependency>

如果您的項目中沒有使用 maven,只需下載(從 maven 網站)並在您的 CLASSPATH 中包含以下 3 個 jar 以獲得相同的效果(除了log4j-api-2.0.jar ):

  • log4j-to-slf4j-2.0.jar
  • 1slf4j-jdk14-1.7.7.jar
  • slf4j-api-1.7.7.jar

https://issues.apache.org/jira/browse/LOG4J2-3282建議創建(待定) log4j-to-jul橋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM