2015-06-24 68 views
2

Log4j的遷移指南的log4j遷移到log4j2

https://logging.apache.org/log4j/2.x/manual/migration.html

指出

呼叫至org.apache.log4j.Logger.getLogger接受一個的LoggerFactory必須刪除org.apache.log4j.spi .LoggerFactory並使用Log4j 2的其他擴展機制之一。

什麼是log4j2可用的擴展機制以及如何最好地遷移像下面的方法在log4j2

private static TraceLoggerFactory stTraceFactory = new TraceLoggerFactory(); 

public static Logger getTraceLogger(final String name) { 
    return getLogger(name, stTraceFactory); 
} 


class TraceLoggerFactory implements LoggerFactory { 
    @Override 
    public Logger makeNewLoggerInstance(final String name) { 
     return new TraceLogger(name); 
    } 
} 

回答

2

您發佈不表明接受LoggerFactory所以使用getLogger方法的代碼,我我們假設你正在調用getLogger方法並將它傳遞給你的TraceLoggerFactory

「其他擴展機制」列在Extending Log4j page上。

就如何最好地遷移您的代碼而言,在不瞭解您當前定製的目的的情況下提供建議是不太可能的。例如 - TraceLogger的用途是什麼?

我建議您花時間更詳細地研究log4j,並確定您是否真的需要定製,或者您是否可以使用log4j提供的功能。定製增加了您的長期維護,並且只有在絕對必要時才能完成。