2011-10-01 15 views
6

の変換中にエラーエラーが発生した私は、私のログにこの例外を見つけました:のlog4j:日付

のlog4j:ERRORエラーを日付の変換中に発生しました。 java.lang.StringBuffer.getCharsでjava.lang.AbstractStringBuilder.getCharsでjava.lang.System.arraycopy(ネイティブメソッド) でjava.lang.NullPointerExceptionが (AbstractStringBuilder.java:328) (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。 (ConnectionManager.java:331) at java。 lang.ref.Finalizer.invokeFinalizeMethod(ネイティブメソッド) at java.lang.ref.Finalizer.runFinalizer(Finalizer.ja VA:83) java.lang.ref.Finalizer $ FinalizerThread.run(Finalizer.java:160)でjava.lang.ref.Finalizer.access $ 100(Finalizer.java:14)

Iでそれが私の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 

UPDATE:実は、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:問題はもう発生しませんでした。

答えて

4

これは非常にまれな状況です。
http://comments.gmane.org/gmane.comp.jakarta.log4j.user/13835

私は問題のコードを見てみました:エラーのためにグーグルで、2006年からのクラスアンロードとは何かを、以下の議論を上げ。lastTimeStringがなんらかの理由で、クラスリロード時に
が初期化されていない場合は、
getChars()を呼び出すとNPEが発生する可能性があります。しかし、VMのいくつかの失敗や、
クラスの再読み込みハックには足りないが、lastTimeStringがnullになる可能性はない。

EDIT:%のD {YYYY-MM-DD HH:MM:SS} [%T]%のP Iは、明示的な変換パターンを追加した

:溶液のための上記の質問を参照してください%c - %m%n

これはまた、次の質問:NPE with Perf4j and Log4jのために働くように思われました。

+0

ありがとう、スタックトレースは実際には非常に似ていますが、私はそれの原因が同じかどうかは分かりません。日付形式を変更すると問題が解決し、問題が解決したことを確認するために質問を編集しました。 – stivlo

+0

http://obscuredclarity.blogspot.com/2010/08/error-occured-while-converting-date.htmlは同意すると思われる – rogerdpack

+0

私のための正確な問題を解決しました:) – krakover

0

私はこの例外を見つけたばかりで、ポートレット(またはサーブレットなど)フォルダからlog4j.jarを削除することで解決しました。

0

私はそれが古いスレッドだと知っていますが、この問題はサーバーを再起動して解決しました。えええええええええええええええええええええええええええええええええええええええええば

関連する問題