gpt4 book ai didi

java - log4j:ERROR 转换日期时出错

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:22:54 25 4
gpt4 key购买 nike

我在我的日志中发现了这个异常:

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:443) at org.apache.log4j.helpers.PatternConverter.format(PatternConverter.java:65) at org.apache.log4j.PatternLayout.format(PatternLayout.java:506) at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:310) at org.apache.log4j.WriterAppender.append(WriterAppender.java:162) at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251) at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66) at org.apache.log4j.Category.callAppenders(Category.java:206) at org.apache.log4j.Category.forcedLog(Category.java:391) at org.apache.log4j.Category.info(Category.java:666) at org.obliquid.db.ConnectionManager.releaseConnection(ConnectionManager.java:313) at org.obliquid.db.ConnectionManager.finalize(ConnectionManager.java:331) at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method) at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83) at java.lang.ref.Finalizer.access$100(Finalizer.java:14) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)

我认为这可能是由我的 log4j.properties 文件引起的,尤其是由 ConversionPattern 引起的。关于如何修复的任何想法?

#Updated at Wed Sep 14 21:57:51 CEST 2011
#Wed Sep 14 21:57:51 CEST 2011
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.rootLogger=INFO, stdout
log4j.appender.R.File=yamweb.log
log4j.appender.R.MaxFileSize=1000KB
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.logger.yamweb=DEBUG
log4j.logger.org.springframework=INFO
log4j.logger.org.springframework.beans=DEBUG
log4j.logger.com.amazonaws=WARN

更新:实际上,查看 PatternLayout JavaDoc ,我什至没有提到日期格式。

d 用于输出日志事件的日期。日期转换说明符后面可以跟一个用大括号括起来的日期格式说明符。例如,%d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}。如果没有给出日期格式说明符,则假定为 ISO8601 格式。

我添加了一个显式转换模式:%d{yyyy-MM-dd HH:mm:ss} [%t] %p %c - %m%n——看日志,如果有帮助,我会通知您。

更新 2:问题不再发生。

最佳答案

这似乎是一种非常罕见的情况。谷歌搜索错误出现了 2006 年的以下讨论,与类卸载有关:
http://comments.gmane.org/gmane.comp.jakarta.log4j.user/13835

I did look at the code in question. If lastTimeString was somehow
not initialized on class reload, then there could be a NPE on the
call to getChars(). However, short of a some failure in the VM or a
class reloading hack, I don't see how lastTimeString could be null.

编辑:请参阅上面的问题以获取解决方案:

I've added an explicit conversion pattern: %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c - %m%n

这似乎也适用于以下问题:NPE with Perf4j and Log4j .

关于java - log4j:ERROR 转换日期时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7620886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com