问题描述
我正在处理一个使用 NetBeans 平台的项目.在底层,NetBeans使用 java.util.logging
框架.
I'm working on a project that uses the NetBeans Platform. Under the hood, NetBeans uses the java.util.logging
framework.
我想通过将 java.util.logging
绑定到 log4j2
来拦截这些日志调用.这可能吗?
I would like to intercept these log calls by binding java.util.logging
to log4j2
. Is this possible?
已经问过类似的先前问题,但特定于 log4j
而不是 log4j2
!
Previous questions have been asked that are similar, but were specific to log4j
and not log4j2
!
推荐答案
我找到了一个解决方案:
I've found a solution:
NetBeans平台以 org.netbeans.*
命名空间命名记录器.要路由NetBeans日志调用,我只需创建一个 Handler
并将其注册到 org.netbeans
记录器中即可.
The NetBeans Platform names logger after the org.netbeans.*
namespace. To route NetBeans log calls, I simply created a Handler
and registered it with the org.netbeans
logger:
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
并在必要时禁用父记录器:
Be sure to register the new Handler
and disable parent loggers if necessary:
Logger logger = Logger.getLogger("org.netbeans");
logger.addHandler(new CustomerHandler());
logger.setUseParentHandlers(false);
这篇关于如何将java.util.logging发送到log4j2?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!