2009-11-04 1 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> 


В некоторых классов я ожидаю получить:

[11/4/09 17: 03: 57: 160 IST] 00000012 SystemOut O 04-11 17: 03: 57.144 | | [server.startup: 0] | MainServlet.java:init:79 | DEBUG | Тест Debug

я получаю неправильный исходный код расположение:

[11/4/09 17: 03: 57: 160] IST 00000012 SystemOut O 04-11 17: 03: 57.144 | | [server.startup: 0] | ?: Init :? | DEBUG | Test Debug

В некоторых других классах я получаю правильное местоположение источника.

Что я делаю неправильно?

ответ

1

Возможно, некоторые из ваших классов скомпилированы без информации о строках? Если вы добавите опцию «оптимизация» -O в javac, она разделит номера строк.

0

Вы инициализируете свой регистратор в этих проблемных классах или наследуете его? Например, у вас есть строка, подобная этой:

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