繁体   English   中英

使用 java.util.logging 的 Commons 日志记录

[英]Commons logging to use java.util.logging

我正在尝试使用公共日志记录并希望使用 java.util.logging 作为底层机制。

日志测试程序

import org.apache.commons.logging.*;

public class LogTest { 

        public static void main(String args[]) {
            System.setProperty("java.util.logging.config.file","log.properties");
            Log logger = LogFactory.getLog(LogTest.class);
            logger.trace("trace msg");
        }
}

我有 src/main/resources/log.properties(我正在使用 maven 项目)

handlers=java.util.logging.ConsoleHandler

# Default global logging level.
# Loggers and Handlers may override this level
.level=ALL

我看不到任何输出。 请告诉我如何以编程方式设置 log.properties 以利用 java 日志记录。

您需要指定一个实现 Log 接口的记录器。 在这种情况下, Jdk14Logger

查看如何将“Apache Commons Logging”与“Java SE Logging”结合使用? 更多细节。

除了来自链接:

将“ commons-logging.properties ”文件放在应用程序的类路径中。 这个文件的内容应该是这样的: org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger设置这个属性会指示 Commons-Logging 使用 JDK Logger(即 Java SE Logger)作为日志执行。

然后将log-config.properties放在您的类路径中并进行相应配置。

如果您决定在将来更改 impls, 则可以使用更多开箱即用的记录器

在您的类路径中创建commons-logging.properties

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger

在 Logger 实例之前设置java.util.logging.config.file

System.setProperty("java.util.logging.config.file","log.properties");

然后 JDK 日志记录将追加所有由 org.apache.commons.logging.* 使用的日志;

例如:spring、hibernate、struts 等。

# Loggers and Handlers may override this level

尝试在 log.properties 中添加java.util.logging.ConsoleHandler.level=ALL

虽然 Snekse 的回答基本上是正确的,但有一点需要纠正/澄清:

  1. 正确:commons-logging 从类路径中搜索其属性文件。 因此,必须在类路径中找到 commons-logging.properties
  2. 不正确:JDK 记录器(JUL 记录器)通过 FileInputStream(它适用于文件系统对象而不是类路径)加载其配置。 请参阅 java.util.logging.LogManager.readConfiguration()。 因此,“java.util.logging.config.file”的 System-Property 值必须是绝对路径或相对于实际执行目录的路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM