Estoy trabajando en un proyecto, y actualmente estoy trabajando en la implementación de algunos registros con log4j y tenía curiosidad sobre cómo debería implementar los registros. Las dos implementaciones estoy dando vueltas son los siguientes:Registro de Java con clases abstractas
primera opción
Usa el registro sencillo del super clase para esa clase y todas las subclases:
public abstract class AbstractFoo {
protected static Log LOG = LogFactory.getLog(AbstractFoo.class);
...
}
public class Foo extends AbstractFoo {
public void someMethod() {
LOG.info("Using abstract log");
}
}
segunda opción
Utilice registros individuales para cada clase, super y subs:
public abstract class AbstractFoo {
private static Log LOG = LogFactory.getLog(AbstractFoo.class);
...
}
public class Foo extends AbstractFoo {
private static Log LOG = LogFactory.getLog(Foo.class);
public void someMethod() {
LOG.info("Using own log");
}
}
¿Qué tiene más sentido y por qué?
Hasta ahora he visto dos enfoques: registradores estáticos (como en la pregunta) y registradores no estáticos (como en su ejemplo). ¿Los madereros estáticos no son una mejor solución (una instancia de registrador por todas las instancias)? –
loggers estáticos son mejores si son los mismos para todas las instancias. En el caso de la clase abstracta, la clase de las instancias no es la misma. –
Me gusta esto, parece una buena manera de combinar ambas opciones.Usted termina con un solo registro, pero se une a la clase adecuada. +1 – shuniar