2010-04-07 13 views
10

este momento para mi ConversionPattern tengo:Log4J nombre del show paquete

log4j.appender.A1.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss,SSS} %5p [%t] (%F:%L) - %m%n 

Lo que me gustaría hacer es también incluyen el nombre completo del paquete con la clase (% M:% L) pero puedo' t encuentra any config to do so in the docs. Entiendo que esto será más lento, pero solo para la depuración y no cuando el sistema estará en producción.

Respuesta

21

Tal vez simplemente te malinterprete, pero% C dará como resultado tu clase con el paquete.

Desde sus documentos referenciados:

% C

utiliza para emitir el nombre clase completo de la persona que llama que emite la petición registro. Este especificador de conversión se puede seguir opcionalmente por especificador de precisión, que es una constante decimal entre paréntesis.

Si se da un especificador de precisión, se imprimirá entonces sólo el número correspondiente de derecho mayoría de los componentes del nombre de la clase . De forma predeterminada, el nombre de clase se imprime en forma totalmente calificada .

Por ejemplo, para el nombre de clase "org.apache.xyz.SomeClass", el patrón % C {1} dará como resultado "SomeClass".

ADVERTENCIA La generación de la clase de llamante es lenta. Por lo tanto, se debe evitar el uso de , a menos que la velocidad de ejecución sea no constituye un problema.

Actualización: En muchos casos, puede utilizar% C, que también se imprimirá la clase completa con el paquete también, si su categoría es el nombre de clase. Por ejemplo, cuando su materia haciendo así cuando la inicialización de su Registro:

private static final Log LOG = LogFactory.getLog(MyClazz.class); 

Usando% c no es lento.

+0

¡Eso sería! Lo extrañé completamente. Doh. –

+0

puede probar su patrón en línea en este sitio: http://log4jtester.com/ –

1

El uso de C{1} es lento. Por favor, vea los detalles a continuación:

según el siguiente link:

utiliza para emitir el nombre de clase completo de la persona que llama emisión la solicitud de registro. Este especificador de conversión puede ser opcionalmente seguido del especificador de precisión, que es una constante decimal en los paréntesis . Si se proporciona un especificador de precisión, solo se imprimirá el número correspondiente de la mayoría de los componentes correctos del nombre de la clase . Por defecto, el nombre de la clase se envía en forma completamente calificada .

Por ejemplo, para el nombre de clase org.apache.xyz.SomeClass, la patrón de salida %C{1} voluntad SomeClass.

ADVERTENCIA La generación de la información de clase de llamada es lento. Por lo tanto, se debe evitar el uso a menos que la velocidad de ejecución no sea un problema.

Cuestiones relacionadas