2012-04-04 50 views
0

我目前在Log4J中使用SocketAppender,並且遇到了一些將數據傳遞到遠程主機的問題,特別是在丟失LocationInfo(類名,行號等)時遇到了一些問題。我所做的是以下幾點:在運行時擴展Log4JLogger並調用子類

​​

在運行時,我怎麼能更改下面的代碼搶MyLogger而不是Log4JLogger

private static Log logger = LogFactory.getLog(Test.class); 

回答

1

您不必延伸記錄儀,但實現你自己的Appender或擴展底座Log4j追加你的需要。例如,您可以擴展AppenderSkeleton

我無法想象你爲什麼需要它。另一種可能性可能是使用Log4J Mapped Diagnostic Context

+0

當你有一個分佈式環境時(根據我的閱讀),MDC和NDC不能很好地工作。主要問題是SocketAppender吃掉LocationInfo – Woot4Moo 2012-04-04 13:07:57

+0

因此,即使文檔(http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/SocketAppender.html)說「 ...該事件將使用相同的時間戳,NDC,位置信息記錄,就好像它是由客戶端本地記錄的一樣......「?這是一個錯誤? – dash1e 2012-04-04 13:13:43

+0

它是我的配置文件的錯誤或問題。看到我的其他問題的詳細信息:http://stackoverflow.com/questions/9944681/log4j-socketappender-swallows-debug-information-from-remote-clients – Woot4Moo 2012-04-04 13:15:39