2009-11-04 46 views
2

我正在使用log4j進行跟蹤。Log4J未提供正確的源信息

我使用我的跟蹤以下模式:

<layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{dd-MM HH:mm:ss.SSS} | %X{sid} | [%t] | %F:%M:%L | %-5p | %m%n"/> 
</layout> 


一些類我期望能獲得:

[09年11月4日17:03:57:160 IST] 00000012 SystemOut O 04-11 17:03:57.144 | | [server.startup:0] | MainServlet.java:init:79 | DEBUG |測試調試

我得到錯誤的源代碼位置:

[09年11月4日17:03:57:160 IST] 00000012 SystemOutØ04-11 17:03:57.144 | | [server.startup:0] | ?:init:? | DEBUG |測試調試

在其他一些類中,我得到正確的源位置。

我在做什麼錯?

回答

1

也許你的一些課程是在沒有行信息的情況下編譯的?如果您將「優化」選項-O添加到javac,它將去除行號。

0

您是在初始化那些問題類中的記錄器還是繼承它?例如,你是否有與此類似的行:

protected final Log logger = LogFactory.getLog(getClass());