Comment configurer Logger par programme dans log4j2.02?
Je veux utiliser log4j sans tout fichier de configuration.
Ce que je wan à faire est quelque chose comme:
logger = (Logger) LogManager.getLogger(this.getClass());
String pattern = "[%level] %m%n";
//do something to make this logger output to an local file "/xxx/yyy/zzz.log"
J'ai trouvé cette réponse: La Configuration De Log4j Enregistreurs Par Programmation.
Mais les docs de Logger#addAppender
dit:
Cette méthode est pas exposés par le biais de l'API publique et est principalement utilisé pour les tests unitaires.
Je ne suis pas sûr si c'est la bonne façon d'utiliser cette méthode dans mon code ou il y a d'autres de meilleure solution pour résoudre mon problème.
source d'informationauteur Eastsun
Vous devez vous connecter pour publier un commentaire.
La documentation officielle montre un exemple : par programmation à l'Ajout de la Configuration Actuelle
Avec les limitations suivantes :
Cette solution permet d'éviter d'utiliser la méthode de la mise en œuvre principales
org.apache.logging.log4j.core.Logger
et il évite sale jeté comme ça :Si je me contente de répondre à vos besoins, je peux vous proposer trois options. J'utilise le premier pour une sorte de "bootstrap" Enregistreur de config, mais je pensais que le deuxième serait nécessaire au premier abord. Votre troisième choix paraît fastidieux, car il faut appeler les différentes API log4j-s d'obtenir configurés.
Utilisation de Log4j au cours de la journalisation simple cadre pour Java ...
Faire un "minime" ou "par défaut" log4j.les propriétés de fichier dans votre dossier de ressources pour le fichier JAR. Ensuite déclarer certaines statique...
Écrire votre config pour un StreamWriter au lieu de placer un fichier dans votre BOCAL, et de donner ensuite le cours d'eau pour le journal configurateur comme un StringReader et utiliser l'exemple ci-dessus (plus ou moins).
Vous pouvez utiliser le slf4j API à faire de votre journal de config, plutôt que d'écrire directement à Log4j. La plupart des endroits où j'ai été préfèrent le SLF4J route.
Personnellement, je préfère l'option n ° 1; il est facile à entretenir. simple et vous pouvez toujours en commander à nouveau le code pour accepter/rechercher un fichier à charger en premier. Il y a d'autres avenues latérales, vous pouvez considérer, tels que la définition des variables d'environnement par programme au démarrage. Qui semble artificiel pour moi.
La façon dont j'utilise #1 est d'établir une valeur par défaut /bootstrap enregistreur de configuration via le fichier de ressources, qui lui-même est enveloppé dans le fichier JAR. Vous pouvez reconfigurer les choses "plus tard " alors que cette option vous donne un minimaliste star-up ou bootstrap config. Dans les premiers stades, j'ai trouvé les choses n'ont pas (encore) d'être enregistré car l'enregistreur de données d'initialisation n'était pas encore arriver sur embedded applications. J'ai donc gardé l'option simple pour bootstrap (ou par défaut) de base depuis. Espérons que cette aide.
Avec la dernière version de
log4j2
toutes les créer l'Api commesont devenus obsolètes, il est préférable d'utiliser un journal personnalisé
ConfigurationFactory
avecConfigurationBuilder
pour définir la configuration de l'enregistrement par programmation.