2011-10-01 14 views
6

convertir encontré esta excepción en mis registros:log4j: error error ocurrió mientras que la fecha

log4j: ERROR Error al convertir la fecha. java.lang.NullPointerException en java.lang.System.arraycopy (Nativo Método) en java.lang.AbstractStringBuilder.getChars (AbstractStringBuilder.java:328) en java.lang.StringBuffer.getChars (StringBuffer.java:201) en org.apache.log4j.helpers.ISO8601DateFormat.format (ISO8601DateFormat.java:130) en java.text.DateFormat.format (DateFormat.java:316) en org.apache.log4j.helpers.PatternParser $ DatePatternConverter .convert (PatternParser.java:443) en org.apache.log4j.helpers.PatternConverter.format (PatternConverter.java:65) en org.apache.log4j.PatternLayout.format (PatternLayout.java:506) en org .apache.log4j.WriterAppender.subAppend (WriterAppender.java:310) en org.apache.log4j.WriterAppender.append (WriterAppender.java:162) en org.apache.log4j.AppenderSkeleton.doAppend (AppenderSkeleton.java:251) en org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders (AppenderAttachableImpl.java:66) en org.apache.log4j.Category.callAppenders (Category.java:206) en org.apache.log4j.Category.forcedLog (Category.java:391) en org.apache.log4j. Category.info (Category.java:666) en org.obliquid.db.ConnectionManager.releaseConnection (ConnectionManager.java:313) en org.obliquid.db.ConnectionManager.finalize (ConnectionManager.java:331) en java. lang.ref.Finalizer.invokeFinalizeMethod (Método nativo) en java.lang.ref.Finalizer.runFinalizer (Finalizer.ja VA: 83) en java.lang.ref.Finalizer.access $ 100 (Finalizer.java:14) en java.lang.ref.Finalizer $ FinalizerThread.run (Finalizer.java:160)

I Creo que podría ser causado por mi archivo log4j.properties, en particular por ConversionPattern. Alguna idea sobre como arreglarlo?

#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 

ACTUALIZACIÓN: En realidad, mirando el PatternLayout JavaDoc, no siquiera mencionar un formato de fecha.

d Se utiliza para mostrar la fecha del evento de registro. El especificador de conversión de fecha puede ir seguido de un especificador de formato de fecha entre llaves. Por ejemplo,% d {HH: mm: ss, SSS} o% d {dd MMM aaaa HH: mm: ss, SSS}. Si no se proporciona un especificador de formato de fecha, entonces se asume el formato ISO8601.

He agregado un patrón de conversión explícito: %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c - %m%n - mirando el registro y le haré saber si ayuda.

ACTUALIZACIÓN 2: el problema ya no sucedía.

Respuesta

4

Parece que esta es una situación muy rara. Google para el error aparecido la siguiente discusión a partir de 2006, algo que ver con la clase de no-carga:
http://comments.gmane.org/gmane.comp.jakarta.log4j.user/13835

Yo miro el código en cuestión.Si lastTimeString era de alguna manera
no inicializado en la recarga de clase, entonces podría haber un NPE en la llamada
a getChars(). Sin embargo, a falta de una falla en la VM o en el truco de recarga de clase de
, no veo cómo lastTimeString podría ser nulo.

EDIT: Véase la pregunta anterior para una solución:

He añadido un patrón de conversión explícita:% d {aaaa-MM-dd HH: mm: ss} [% t]% p % c -% m% n

Esto también pareció funcionar para la siguiente pregunta: NPE with Perf4j and Log4j.

+0

Gracias, el seguimiento de la pila es de hecho muy similar, no estoy seguro de si la causa de ello es el mismo sin embargo. Al cambiar el formato de fecha resolvió el problema, edité mi pregunta para confirmar que el problema estaba resuelto. – stivlo

+0

http://obscuredclarity.blogspot.com/2010/08/error-occured-while-converting-date.html parece estar de acuerdo – rogerdpack

+0

resuelto el problema exacto para mí :) El – krakover

0

Acabo de tropezar con esta excepción, y se resolvió quitando log4j.jar de la carpeta del portlet (o servlet, lo que sea).

0

sé que es un hilo viejo, pero me fijo este problema al reiniciar el servidor. Sí, la respuesta cliché, pero vale la pena intentarlo

Cuestiones relacionadas