我今天拖着一些日志,遇到一个奇怪的错误.
以下是日志中的显示方式:
2014/09/11 15:23:52.801 [CC3A5FDD16035540B87F1B8C5E806588:] WARN a.b.c.Ddd - Main failure
java.lang.NullPointerException: null
2014/09/11 15:23:52.801 [CC3A5FDD16035540B87F1B8C5E806588:] ...
这里的代码如下:
} catch (Exception e) {
Ddd.log.warn("Main failure ", e);
throw e;
}
如果这是重要的,代码在jsp中.在日志中再次重复同样的例外(正如你从投票e所期望的那样).
我没有记录原因是什么 – 日志中的上一行显示查询的执行.这在4天的时间里发生了两次,似乎没有对系统造成任何伤害.
环境:使用Java 5在Tomcat下运行相当繁忙的Web服务.
我不是要求调试系统的提示 – 这些错误已经很久了,甚至可能再也不会发生.关于如何在没有堆栈跟踪的情况下可以创建任何异常(特别是NPE)的情况呢?
添加
正在使用的记录器是一个slf4j驱动的Logback实例.我相信警告方法是here.不知道解决了什么Logback方法,但我有信心Throwable参数被特别处理,如果有一个堆栈跟踪附加到Throwable它会出现在日志中.
LogBack.xml – 根据要求:
DEBUG
${log.consolePattern}
${log.dir}/${log.package}.log
${log.pattern}
${log.dir}/${log.package}.%d{yyyy-MM-dd}.%i.log.zip
16MB
90
true
我在日志中手动编辑了会话ID后的值,以删除客户数据.