java - 将 java.util.logging 重定向到 log4j

标签 java log4j java.util.logging jul-to-slf4j

我正在使用外部 JAR 库,每次使用时都会创建一个日志文件:

   private void initLogger() {
        try {
            boolean var1 = true;
            FileHandler var2 = new FileHandler("lib.log", 4096000, 1, var1);
            var2.setFormatter(new SimpleFormatter());
            this.logger = Logger.getLogger("POS");
            this.logger.addHandler(var2);
        } catch (IOException var3) {
            var3.printStackTrace();
        }
    }

这样,创建文件 lib.loglib.log.lck 等...

问题是我的应用程序正在使用 log4j(来自 maven xml):

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

我想要的很简单,我想将该库日志的所有调用重定向到我的记录器。

我尝试过使用jul-to-slf4j:

https://www.slf4j.org/legacy.html

<!-- https://mvnrepository.com/artifact/org.slf4j/jul-to-slf4j -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jul-to-slf4j</artifactId>
    <version>1.7.25</version>
</dependency>

使用此配置(控制台+每日文件):

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1, RollingAppender
# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%-5p] %d %c - %m%n

log4j.appender.RollingAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingAppender.File=pos.log
log4j.appender.RollingAppender.DatePattern='.'yyyy-MM-dd
log4j.appender.RollingAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingAppender.layout.ConversionPattern=[%-5p] %d %c - %m%n

然后将这段代码放在开头:

    LogManager.getLogManager().reset();
    SLF4JBridgeHandler.removeHandlersForRootLogger();
    SLF4JBridgeHandler.install();
    Logger.getLogger("POS").setLevel(FINEST);

这样,文件就被创建了(lib.log),但它是空的。并且输出不会发送到 pos.log (在 log4j 中配置的)。

我缺少什么?谢谢!

最佳答案

您没有在项目 ( more ) 中包含 slf4j-log4j12

也许Log4j JDK Logging Adapter是更好的解决方案。

关于java - 将 java.util.logging 重定向到 log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44077406/

相关文章:

java - LinkedHashMap removeEldestEntry 删除 2 个元素?

java - 一切正常,但仍然出现 -> 类型 Dynamic Web Module 4.0 需要 Java 1.8 或更高版本

java - 验证 java 版本兼容性

java - 将 log4j.properties 转换为 log4j.xml 的脚本

java - 在控制台中获取没有 ANSI 颜色序列的 log4j 的颜色日志

java - 将 JUL 级别映射到 AppEngine Web 控制台级别

java - 在 Java 中打印整数数组的唯一值的总和

java - Log4j和AOP,如何获取实际的类名

java - 如何在不同的 Java 类中设置单独的日志级别?

java - 记录器与 System.out.println