Iniciar sesión en la aplicación web

(a)How to implement one instance of Logger per application instead of one instance of Logger per Class. (b) Can we customize stack-trace to print only error occurred line number and its java class name.

Muchas Gracias

preguntado el 22 de mayo de 12 a las 15:05

2 Respuestas

Typically, you'd have loggers setup per class because that's a nice logical component. Threads are already part of the log messages (if your filter displays them) so slicing loggers that way is probably redundant.

Regarding application or layer based loggers, the problem is that you have to find a place to stick that Logger object. Not a really big deal. The bigger issue is that some classes may be used at multiple levels of from multiple applications... it could be difficult to get your logger right. Or at least tricky.

... y lo último que desea son suposiciones erróneas en su configuración de registro.

If you care about applications and layers and have easy separation points, the NDC is the way to go. The code can be a little excessive sometimes but I don't know how many times I've been saved by an accurate context stack showing me that Foo.bar() was called from application X in layer Y.

La estrategia más utilizada es la de crear un registrador por clase. Si crea nuevos hilos, asígneles un nombre útil, para que su registro sea fácilmente distinguible.

La creación de registradores por clase tiene la ventaja de poder activar / desactivar el registro en la estructura del paquete de sus clases:

log4j.logger.org.apache = INFO
log4j.logger.com.example = DEBUG
log4j.logger.com.example.verbose = ERROR

Lo anterior establecería todo el código de la biblioteca apache en INFO nivel, cambie el registro de su propio código a DEBUG nivel con la excepción del paquete detallado.

contestado el 22 de mayo de 12 a las 15:05

(a) define the same category for all invocations of getLogger():

// Create a logger per class:    
static Logger log = Logger.getLogger(MyClass.class);

// Use the same logger for the whole application:
// use this line in all your classes:
static Logger log = Logger.getLogger("YourLogCategory");

HTH.

contestado el 22 de mayo de 12 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.