Log4j не печатает трассировку стека - PullRequest
6 голосов
/ 14 апреля 2011

Я ловлю исключение NullPointerException, но log4j не печатает трассировку стека, я указал номер строки исключения и т. Д. Что не так?

Мой журнал

20110412-101042,317[ Timer-7][R] Exception while processing for value: abc.                  [xyz.Dummy]
java.lang.NullPointerException

log4j.property файл

log4j.rootCategory=ERROR, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-5p %r [%t] : %m%n
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=my_application.log
log4j.appender.logfile.Append=true
log4j.appender.logfile.MaxBackupIndex =10
log4j.appender.logFile.MaxFileSize=40000KB
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyyMMdd-HHmmss,SSS}[%8.8t][%.1p] %-70m[%c{2}]%n

Код моего фрагмента

String value;
try {
   value = "abc";
   //... lots for code
}catch(Exception e) {
   logger.error("Exception while processing for value: " + value + ". ", e);
}

Ответы [ 3 ]

4 голосов
/ 14 апреля 2011

Проблема в %-70m в вашем макете. Он обрезает сообщение и, следовательно, не достигает трассировки стека. Вместо этого используйте %m как обычно.

Еще лучше: напишите собственный макет, это будет работать так, как вы хотите.

0 голосов
/ 25 сентября 2015

Любой, кто хочет напечатать номер строки, знает, где произошло исключение нулевого указателя, не печатая полную трассировку стека, пожалуйста, попробуйте как ниже:

try {
 // your code here
}catch(NullPointerException ne){
 System.out.println("NullPointerException : LineNumber:"+ne.getStackTrace()[0].getLineNumber()+" : "+ne);

}
0 голосов
/ 24 октября 2013

Ваш код показывает только сообщение об исключении. Если вы хотите увидеть трассировку стека, вы должны использовать что-то вроде этого:

Как сохранить printStackTrace в строку

Попробуйте использовать это вместо исключения 'e'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...