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

lxkprmvk  于 2022-11-06  发布在  Java
关注(0)|答案(3)|浏览(115)

我很熟悉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。

5lhxktic

5lhxktic1#

配置log4j的标准方法是在类路径的根目录中创建 log4j.xml

<?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>
14ifxucb

14ifxucb2#

JULAppender的实现(顺便说一句,可以下载here)现在已经很旧了(从2008年开始),目标是JDK 1.4和log4j版本1.2.15。
如果您使用log4j 2.0版(及更高版本),一个简单的解决方案是使用log4j的SLF4J appender记录所有消息,而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

相关问题