7
votes

Comment puis-je implémenter la journalisation dans un énum singleton?

J'utilise un énum singleton, mais la mise en œuvre de la journalisation est gênante. Ceci:

Foo.java: illegal reference to static field from initializer 


0 commentaires

3 Réponses :


16
votes

En réponse à votre question, faites simplement l'enregistreur statique ...

BTW, je pense que sa pratique standard d'utiliser un enregistreur statique, même pour des instances d'objet. En d'autres termes, l'enregistreur est sur la classe; Tous les objets utilisent les références de l'enregistreur statique.

voir

http://logging.apache.org/log4j/1.2/manual.html < / a>

La plupart des exemples d'utilisation d'un enregistreur dans un enregistreur ont l'enregistreur comme une propriété statique ...



5
votes

LOG DYNAMIQUEMENT:

Logger.getLogger(Foo.class.getName()).info("log info");


3 commentaires

Ce n'est vraiment pas si vous utilisez un IDE. Définissez-vous un modèle. Dans Eclipse, j'utilise "Journal" pour développer ce modèle à une entrée de journal de débogage rapide.


Quel est l'avantage de cette méthode?


Les instances sont acceptées par le CIO et peuvent être utilisées pour définir un environnement de journalisation différent pour chaque application sur un serveur. Légèrement plus lent, mais il existe certains avantages (et d'autres inconvénients également).



2
votes

Un peu plus courte: Utilisez une méthode: Logger (). Débogage (...) i>

private static Logger logger()
{
    if(logger == null)
    {
        logger = Logger.getLogger(AnEnum.class);
    }

    return logger;
}

/** Logger **/
private static Logger logger;


0 commentaires