NPE与Perf4j和Log4j [英] NPE with Perf4j and Log4j

查看:92
本文介绍了NPE与Perf4j和Log4j的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在将Perf4j与Log4j一起使用时,出现以下异常:

while using Perf4j together with Log4j I get the following exception:

log4j:ERROR Error occured while converting date.
java.lang.NullPointerException
at java.lang.System.arraycopy(Native Method)
at java.lang.AbstractStringBuilder.getChars(AbstractStringBuilder.java:328)
at java.lang.StringBuffer.getChars(StringBuffer.java:201)
at org.apache.log4j.helpers.ISO8601DateFormat.format(ISO8601DateFormat.java:130)
at java.text.DateFormat.format(DateFormat.java:316)
at org.apache.log4j.helpers.PatternParser$DatePatternConverter.convert(PatternParser.java:444)
at org.apache.log4j.helpers.PatternConverter.format(PatternConverter.java:65)
at org.apache.log4j.PatternLayout.format(PatternLayout.java:502)
at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:302)
at org.apache.log4j.WriterAppender.append(WriterAppender.java:160)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
at org.perf4j.log4j.AsyncCoalescingStatisticsAppender$1.handle(AsyncCoalescingStatisticsAppender.java:200)
at org.perf4j.helpers.GenericAsyncCoalescingStatisticsAppender$Dispatcher.run(GenericAsyncCoalescingStatisticsAppender.java:316)
at java.lang.Thread.run(Thread.java:662)

我的log4j.xml看起来像这样:

My log4j.xml looks like this:

<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p: %c - %m%n" />
    </layout>
</appender>

<!-- Perf4j Appender -->
<appender name="CoalescingStatistics"
          class="org.perf4j.log4j.AsyncCoalescingStatisticsAppender">
    <param name="TimeSlice" value="10000"/>
    <appender-ref ref="fileAppender"/>
</appender>

<!-- This file appender is used to output aggregated performance statistics -->
<appender name="fileAppender" class="org.apache.log4j.FileAppender">
    <param name="File" value="perfStats.log"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m%n"/>
    </layout>
</appender>

<!-- Perf4j Loggers -->
<logger name="org.perf4j.TimingLogger" additivity="false">
    <level value="INFO"/>
    <appender-ref ref="CoalescingStatistics"/>
</logger>

我在做什么错了?

推荐答案

我希望我能帮助遇到同一异常的人.所以这是我的答案:

I hope I can help someone who just ran into the same exception. So here is my answer:

似乎所描述的异常仅在少数情况下出现. 这是我的设置:

It seems that the described exception only appears under a few circumstances. Here is my setup:

  • 开发Web应用程序
  • Tomcat 6.0.32
  • Log4j 1.2.15
  • Perf4j 0.9.16

此外,似乎只有在重新部署Web应用程序之后才会发生该异常.如果只是重新启动tomcat,则不会发生该异常.

Furthermore it seems that the exception only occurs after one redeploys the web application. The exception does NOT occur if you just fresh start the tomcat.

我为摆脱异常所做的事情:

  • 将log4j模式从value="%d %-5p: %c - %m%n"更改为value="%d{yyyy-MM-dd HH:mm:ss} %-5p: %c - %m%n"
  • 将Log4j升级到版本1.2.16
  • Changed log4j pattern from value="%d %-5p: %c - %m%n" to value="%d{yyyy-MM-dd HH:mm:ss} %-5p: %c - %m%n"
  • Upgraded Log4j to version 1.2.16

这篇关于NPE与Perf4j和Log4j的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆