如何将java.util.logging发送到log4j2?
我正在开发一个使用 NetBeans 平台的项目。在底层,NetBeans 使用该框架。java.util.logging
我想通过绑定到 来拦截这些日志调用。这可能吗?java.util.logging
log4j2
之前的问题已经问过,但很具体,但不是!log4j
log4j2
我正在开发一个使用 NetBeans 平台的项目。在底层,NetBeans 使用该框架。java.util.logging
我想通过绑定到 来拦截这些日志调用。这可能吗?java.util.logging
log4j2
之前的问题已经问过,但很具体,但不是!log4j
log4j2
2014/9/12 更新:从版本 2.1 开始,Log4j 2 包含一个不需要 SLF4J 的 JUL 网桥。
不需要自定义代码。两件事:
将以下 jar 放入类路径中:log4j-api-2.x、log4j-core-2.x 和 log4j-jul-2.x。
将系统属性设置为在对 LogManager 或 Logger 进行任何调用之前java.util.logging.manager
org.apache.logging.log4j.jul.LogManager
Log4J2 常见问题解答页面直观地显示依赖项:http://logging.apache.org/log4j/2.x/faq.html#which_jars
我找到了一个解决方案:
NetBeans 平台在命名空间之后命名记录器。要路由 NetBeans 日志调用,我只需创建一个并将其注册到记录器:org.netbeans.*
Handler
org.netbeans
public class CustomHandler extends Handler
{
@Override
public void publish(LogRecord record)
{
// Re-direct log calls here (e.g. send record to Log4j2 logger).
}
@Override
public void flush()
{
}
@Override
public void close() throws SecurityException
{
}
}
如有必要,请务必注册新的父记录器并禁用父记录器:Handler
Logger logger = Logger.getLogger("org.netbeans");
logger.addHandler(new CustomerHandler());
logger.setUseParentHandlers(false);