Siempre he usado el siguiente patrón para construir (SLF4J) madereros:¿Cuál es la sobrecarga de crear un registrador SLF4J en contextos estáticos y no estáticos?
private static final Logger log = LoggerFactory.getLogger(MyClass.class);
Esto ha funcionado hasta ahora, pero me preguntaba sobre el contexto static
en algún momento y la necesidad de pasar de la clase concreta literal todo el tiempo en lugar de usar un registrador no estático como
private final Logger log = LoggerFactory.getLogger(getClass());
Esto se ha preguntado básicamente (y respondió) antes aquí para LOG4J
Should logger be private static or not
y aquí
Should be logger always final and static?
realizo final
es básicamente obligatorio, así que me quedo preguntando qué tan alto la sobrecarga de uso de SLF4J en contexto no es estática realidad.
Q:
¿Hay alguna significativa práctica sobrecarga de uso de
private final Logger log = LoggerFactory.getLogger(getClass());
sobre
private static final Logger log = LoggerFactory.getLogger(MyClass.class);
en la aplicación promedio (web)? (Sin necesidad de "discutir" de gama alta, de carga pesada webapps aquí)
Nota, en última instancia, estoy planeando utilizar un enfoque aún más agradable el uso de CDI para obtener un registrador SLF4J como
@Inject private final Logger log;
como se describe aquí http://www.seamframework.org/Weld/PortableExtensionsPackage#H-TtLoggerttInjection, pero primero necesito saber sobre el almacenamiento en caché del registrador.
Sub pregunta: ¿Es incluso posible utilizar ?:
@Inject private static final Logger log;
(empezando con CDI para ser honesto)
Tenga en cuenta que si utiliza 'getClass()' el nombre/categoría del registrador puede cambiar inesperadamente en presencia de subclases. – Thilo
Gracias. De hecho, estoy buscando un "patrón de creación de registrador" aquí, pero tengo que admitir que no estoy 100% seguro de mi propio caso de uso, es decir si quiero que las posibles subclases obtengan sus propios registradores o si quiero para reutilizar el de una súper clase compartida. : -/ – Kawu
puede deshacerse de esta variable si utiliza [jcabi-log] (http://www.jcabi.com/jcabi-log/), un contenedor estático alrededor de slf4j – yegor256