À l'aide de getSimpleName() vs getName() pour l'acquisition d'un enregistreur de
J'ai vu du code qui utilise log4j
, qui acquiert logger
pour un Logger
à l'aide de
static public Logger getLogger(String name)
et
static public Logger getLogger(Class clazz)
avec l'ancienne api passée explicitement avec getSimpleName()
, alors que la deuxième utilise getName()
sur le passé Class
. Est-il une différence entre ces deux? Serait-il en effet si je configurer différentes formules pour vous connecter à différents niveau de log4j.fichier de propriétés?
Déjà couvertes dans ce post stackoverflow.com/q/15202997
OriginalL'auteur kuriouscoder | 2010-11-29
Vous devez vous connecter pour publier un commentaire.
Oui, il y a une énorme différence.
Je n'ai jamais utiliser
simpleName
pourLogger
instance comme il démonte le nom du package.En plus d'avoir des problèmes lorsque le même nom de classe existe dans deux packages différents (pour les deux classes d'obtenir le même journal instance), vous perdez la capacité de contrôle de l'enregistreur de l'héritage.
par exemple pour les deux enregistreurs:
dans les propriétés, je peux juste:
OriginalL'auteur kunal
E. g. Ma classe ShapeDemo.java réside dans com.paquet de test, et j'ai écrit un code comme ci-dessous.
Ce sera la sortie suivante
OriginalL'auteur user2481237
Je préfère utiliser le nom complet (de la Classe.getName()). Quand les paquets sont organisées correctement, cela permet un réglage log4j pour gérer différemment les messages du journal originaires de différentes parties de l'packages java arbre.
Par exemple, vous pouvez facilement configurer toutes les classes dans les paquets commençant par "com.mycompany.infra" pour utiliser un spécifique appender, et consigner uniquement les messages de niveau d'AVERTIR ou au-dessus.
OriginalL'auteur Eyal Schneider
À l'aide de ce.getClass().getName();
Retourne : alin.iwin.flickrbrowser.GetRawData
Pendant ce temps
Chaîne privée LOG_TAG = ce.getClass().getSimpleName();
Retour seulement : GetRawData.
OriginalL'auteur Coman
Vous pouvez obtenir confus si vous avez de nombreuses classes avec le même
simpleName
dans différents paquets. Ayant beaucoup de bûcherons avec le même nom ne devrait pas être un problème autrement - tout pourrait être source de confusion.OriginalL'auteur Armand