Soy muy nuevo en log4j. No quiero mostrar seguimiento de la pila de excepción en mi archivo de registro comoConvierta e.printStackTrace() para usar log4j en su lugar
java.lang.IllegalArgumentException: nodeRef is a mandatory parameter
at org.alfresco.util.ParameterCheck.mandatory(ParameterCheck.java:42)
Estas excepciones se escriben directamente a la consola mediante el uso de e.printStackTrace()
así
try {
// something
} catch(Exception e) {
StringWriter stack = new StringWriter();
e.printStackTrace(new PrintWriter(stack));
logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());
}
Ahora estoy personalizar un Open Source proyecto, no escribiendo todos mis programas por mi cuenta. Por lo tanto, es imposible eliminar e.printStackTrace();
en todos los archivos java.
Por lo que sé, el registro que se imprimen por log4j
con el registrador se puede configurar mediante el uso de nivel de error log4j como información, depuración, advertencia.Pero, ¿qué hay de escribir directamente a la consola o archivo?
¿Cómo puedo configurar log4j para que no se imprima solo la pila de pila de excepción pero mostrar otra información? ¿Hay alguna manera de resolverlo?
Primero necesita ** utilizar ** log4j. La declaración catch que muestra a) no usa log4j; b) ni siquiera imprime nada en ninguna parte. Simplemente llena un StringWriter con stacktrace. –
Cambié mi código. Mi ejemplo utiliza e.printStackTrace() y logger.debug(). No está escrito por mí. Mi proyecto usa ese archivo jar cuya fuente adjunta se muestra así. – swemon
Lo que haría es crear un PrintStream para reemplazar System.err que escribe todo lo que log4 log. De esta forma, puede usar System.out o System.err de la forma que quiera y realmente usa log4j. ;) –