warn the properly please org logmanager logger initialize found for example could application appenders java logging log4j

java - the - Uso de getSimpleName() vs getName() para adquirir el registrador



logger java (5)

He visto un código que usa log4j , que adquiere el logger para un logger dado usando

static public Logger getLogger(String name)

y

static public Logger getLogger(Class clazz)

con el api anterior pasado explícitamente con getSimpleName() , mientras que el último usa getName() en la Class pasada. ¿Hay alguna diferencia entre estos dos? ¿Afectaría si configuro varios paquetes para registrar a un nivel diferente en el archivo log4j.properties?


Podría confundirse si tiene muchas clases con el mismo nombre simpleName en diferentes paquetes. Tener muchos registradores con el mismo nombre no debería ser un problema, de lo contrario, solo podría ser confuso.


Por ejemplo, mi clase ShapeDemo.java reside en el paquete com.test, y he escrito un código como el siguiente.

System.out.println("Name-->"+ShapeDemo.class.getName()); System.out.println("SimpleName-->"+ShapeDemo.class.getSimpleName());

Esto saldrá después de

Name-->com.test.ShapeDemo SimpleName-->ShapeDemo


Prefiero usar el nombre completo (Class.getName ()). Cuando los paquetes están organizados correctamente, esto permite que log4j maneje los mensajes de registro que se originan en diferentes partes del árbol de paquetes java.

Por ejemplo, puede configurar fácilmente todas las clases en paquetes que comiencen con "com.mycompany.infra" para usar un appender específico, y registrar solo los mensajes de nivel WARN o superior.


Sí, hay una gran diferencia.

Nunca uso simpleName para la instancia del simpleName ya que simpleName el nombre del paquete. Además de tener problemas cuando existe el mismo nombre de clase en dos paquetes diferentes (lo que lleva a que ambas clases obtengan la misma instancia de registrador), pierde la capacidad de controlar la herencia del registrador.

por ejemplo, para dos madereros:

com.foo.A com.foo.B

En propiedades, solo puedo tener:

log4j.logger.com.foo=DEBUG,CONSOLE


Uso de this.getClass (). GetName ();

Devoluciones: alin.iwin.flickrbrowser.GetRawData

mientras tanto

privado String LOG_TAG = this.getClass (). getSimpleName ();

Solo se devuelve: GetRawData.