我正在開發一個使用NetBeans平臺的項目。在引擎蓋下,NetBeans使用java.util.logging
框架。如何發送java.util.logging到log4j2?
我想攔截這些日誌調用通過綁定java.util.logging
到log4j2
。這可能嗎?
先前的問題已被詢問是相似的,但是特定於log4j
而不是log4j2
!
我正在開發一個使用NetBeans平臺的項目。在引擎蓋下,NetBeans使用java.util.logging
框架。如何發送java.util.logging到log4j2?
我想攔截這些日誌調用通過綁定java.util.logging
到log4j2
。這可能嗎?
先前的問題已被詢問是相似的,但是特定於log4j
而不是log4j2
!
我已經找到了解決方案:
NetBeans平臺名稱記錄器org.netbeans.*
命名空間。若要將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);
UPDATE 2014/9/12:從版本2.1開始,Log4j 2包含一個不需要SLF4J的JUL bridge。
不需要自定義代碼。兩件事情:
把下面的罐子在classpath: 的log4j-API的2.x中,log4j的核心 - 2.x和log4j的 - 07月2.X。
設置系統屬性java.util.logging.manager
到org.apache.logging.log4j.jul.LogManager
任何呼叫到日誌管理或記錄儀由前
的Log4J2 FAQ頁面顯示的依賴視覺: http://logging.apache.org/log4j/2.x/faq.html#which_jars
我從來沒有想使用SLF4J。我有一個自定義的Log4j2作爲Facade的包裝器。我找到了一個解決方案並將發佈它。 – bblincoe