util logger create java logging

logger - Java: necesita un paquete de registro que registre el stacktrace



logger java definition (2)

¿Hay un registrador que pueda registrar fácilmente mi stacktrace (lo que obtengo con ex.printStackTrace() )? He buscado en los documentos de log4j y no he encontrado nada sobre el registro de stacktrace.

Puedo hacer esto yo mismo con

StringWriter sw = new StringWriter(); ex.printStackTrace(new PrintWriter(sw)); String stacktrace = sw.toString(); logger.error(stacktrace);

pero no quiero duplicar este código por todos lados.

Si log4j no hace esto por mí, ¿hay otro paquete de registro que registre la stacktrace por mí?

Gracias.


Usando log4j esto se hace con:

logger.error("An error occurred", exception);

El primer argumento es un mensaje para mostrar, el segundo es la excepción (throwable) cuya stacktrace se registra.

Otra opción es el registro de uso común , donde es lo mismo:

log.error("Message", exception);

Con java.util.logging esto se puede hacer a través de:

logger.log(Level.SEVERE, "Message", exception);


En java.util.logging puede inicializar el registrador con un formateador de registro personalizado como aquí:

private Logger initTextLogger() throws SecurityException, IOException { Logger logger = Logger.getLogger(YourClass.class.getName()); FileHandler fileHandler = new FileHandler(logFilePath, false); SimpleFormatter logFormatter = new SimpleFormatter() { @Override public String format(LogRecord record) { String stacktrace = ""; Throwable t = record.getThrown(); if(t!=null){ StringWriter sw = new StringWriter(); t.printStackTrace(new PrintWriter(sw)); stacktrace = sw.toString(); } return record.getLevel() + ": " + record.getMessage() + "/r/n" + stacktrace; } }; fileHandler.setFormatter(logFormatter); logger.addHandler(fileHandler); return logger; }