Nous devons introduire la connexion dans notre application. Nous avons décidé d'utiliser log4j c'est un bon choix. Aussi quelqu'un a dit que nous devrions utiliser le modèle singleton pour l'utilisation de log4j quelqu'un peut-il souligner comment et pourquoi?Comment utiliser log4j dans le code?
Répondre
Si vous introduisez la journalisation pour la première fois, utilisez Logback. Utilisez le fichier de configuration en tant que suggested here et ajoutez-le au classpath. La journalisation sera automatiquement configurée.
Pourquoi avez-vous mentionné si pour la première fois. En quoi est-ce utile au début? –
Certaines personnes sont bloquées avec log4j même si le monde a avancé ;-). L'introduction d'une meilleure alternative est vraiment difficile une fois que vous avez quelque chose qui fonctionne et que l'équipe est à l'aise avec cela. Il est donc préférable de faire preuve de diligence raisonnable et de trouver une meilleure alternative lors de l'introduction d'un nouveau cadre/technologie.Comment regarder ici pour découvrir pourquoi Logback est meilleur: http://logback.qos.ch/reasonsToSwitch.html –
Dans le motif singleton, le champ Logger
est statique à la classe:
public class SomeAwesomeClass {
private static final Logger logger = Logger.getLogger(SomeAwesomeClass.class);
}
L'autre solution est de rendre le (non-statique de champ Logger
qui est, chaque instance de SomeAwesomeClass
contient une référence à la Logger
):
public class SomeAwesomeClass {
private final Logger logger = Logger.getLogger(SomeAwesomeClass.class);
}
Je ne pense pas que cela fait beaucoup de différence la route que vous choisissez comme je crois Log4j retourne sans cesse le même Logger
instance pour chaque instance de SomeAwesomeClass
. Vraiment, ce sont juste des références d'objets inutiles, donc vous pouvez aussi bien utiliser le motif singleton.
Cependant, le modèle non-singleton devient nécessaire si vous faites quelque chose comme ceci:
public class SomeAwesomeClass {
private final Logger logger = Logger.getLogger(getClass());
public void doSomething() {
log.info("Doing something");
}
}
public class AwesomerClass extends SomeAwesomeClass {
}
plus tard ...
SomeAwesomeClass o = new AwesomerClass();
o.doSomething();
Dans cet exemple, le champ logger
correspondra à AwesomerClass
, et non SomeAwesomeClass
.
La raison pour laquelle Singleton est parfois préférable est que nous voulons qu'une seule instance de l'enregistreur par application, sinon, pour chaque nouvelle instance de l'enregistreur, il y aura un fichier nouvellement créé ou un écrasement d'un journal existant fichier.
Si Log4J est un bon choix ou non dépendra de votre recherche/expérience avec les différents enregistreurs disponibles. Tout dépend de vos préférences (j'utilise Log4J tout le temps car je trouve qu'il est plus facile à configurer, mais je ne suis pas biaisé par les enregistreurs).
les célèbres sont là:
- Log4J
- SLF4J
- Logback
- propre Logging Java ....
Il y a quelques exemples sur le web qui montre vous comment utiliser les enregistreurs. Here est une brève comparaison pour Log4J vs SLF4J.
- 1. Utiliser MaxBackupIndex dans DailyRollingFileAppender -log4j
- 2. comment utiliser DynamicResource dans le code derrière?
- 3. Comment configurer le fichier de configuration log4J dans jsp
- 4. Comment utiliser le code C# dans le projet C++
- 5. log4j StringToMatch dans le fichier de propriétés
- 6. Comment utiliser foreach dans C++ cli dans le code managé
- 7. Comment utiliser .Top() avec le code d'abord
- 8. Comment utiliser DataBinding à travers le code?
- 9. Comment envoyer java.util.logging à log4j?
- 10. Quel est le modèle utilisé dans log4j
- 11. Utiliser (L) Code GPL dans le commerce
- 12. Utiliser le code de Google Code
- 13. Comment utiliser le code Sweave (R) dans un fancyhdr?
- 14. Comment utiliser jQuery dans le wiki de google code
- 15. comment utiliser le fichier kml dans mon code
- 16. Comment utiliser le code jquery dans Internet Explorer?
- 17. Comment puis-je utiliser le code Ruby dans .NET?
- 18. Comment remplacer un fichier journal dans log4j?
- 19. Comment configurer DBAppender avec log4j dans JBoss5?
- 20. Log4J dans AS/400
- 21. Comment désactiver log4j dans un fichier tiers?
- 22. Comment utiliser IHardwareService dans votre code?
- 23. Comment utiliser callbacks dans mon propre code
- 24. Horodatage incorrect dans log4j XMLLayout
- 25. exception Log4j dans Grails
- 26. Fileappenders multiples dans log4j
- 27. Logger.DebugFormat dans log4j
- 28. Log4j SMTPappender avec le courrier HTML
- 29. Log4j java.lang.NoClassDefFoundError
- 30. Comment dans le code
Considérons slf4j au lieu de log4j. – DwB
qu'est-ce que slf4j? Comment est-ce différent .. –