log4j 2 - problème de configuration
Je suis en train de configurer log4j 2.0 à journaux de rapport.
Ma config est enregistré en tant que log4j2.xml et c'est son contenu:
<?xml version="1.0" encoding="UTF-8"?>
<configuration name="PRODUCTION" status="OFF">
<appenders>
<RollingFile name="MyFileAppender"
fileName="../Logs/app.log"
filePattern="../Logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingFile>
</appenders>
<loggers>
<root level="trace">
<appender-ref ref="MyFileAppender"/>
</root>
</loggers>
</configuration>
Il existe dans le classpath du projet et j'ai essayé de mettre cela dans de nombreux autres répertoires..
J'ai créé un enregistreur dans le code comme ceci:
Logger logger = LogManager.getLogger(MyClass.class.getName());
logger.info("test");
Et rien n'est écrit et aucun fichier n'est créé.
Quand je déboguer le code, je vois que l'enregistreur est la valeur par défaut de l'enregistreur de(console).
source d'informationauteur Lee
Vous devez vous connecter pour publier un commentaire.
En fait, Ce est un processus simple. Deux grandes classes de Log4j 2 sont comme suit, que vous devez l'importer comme ceci:
Maintenant obtenir un
Logger
exemple en utilisant ce code.Remarque je n'ai pas précisé le nom de la classe à
getLogger()
méthode en tant que paramètre. Log4j 2 automatiquement chiffres.Maintenant, vous pouvez utiliser l'une des
info(), trace(), debug(), warn(), error(), fatal()
méthode de laLogger
classe. Mais à la sortie de l'ensemble de ces méthodes, vous aurez besoin d'un fichier de configuration XML. Par défaut, Log4j 2 seulement produit la sortie de laerror() and fatal()
méthodes.Fichier de Configuration est comme suit:
Enregistrer ce fichier avec un nom de n'importe où. J'utilise Log4j2.xml que le nom. Maintenant, vous aurez besoin de ce fichier pour le mettre dans le classpath, vous pouvez le faire par le passage d'un système de propriété lors de l'exécution du programme comme suit:
Et vous l'avez fait. La journalisation sera tout de suite sur votre console.
Notes Spéciales:
Dans le fichier XML, j'ai fourni 2 appenders: Un fichier et une console. Vous pouvez voir que vous avez juste besoin de dé-commenter le commentaire
AppenderRef
tag pour obtenir la sortie dans un fichier au lieu de la console.Vous pouvez également fournir une variable d'environnement en tant que système de la propriété. Log4j 2 va lire le fichier de configuration à partir de la variable d'environnement d'abord, puis dans
-D
argument si elle ne trouve pas une variable d'environnement.Amusez-vous avec l'exploitation forestière. 🙂
place
log4j2.xml
fichier soussrc/main/resources
. Il fonctionnevous devriez mettre votre log4j2.xml dans le classpath.
ou définir des "log4j.configurationFile" système de la propriété à force d'utiliser votre log4j2.xml
Veuillez vous référer à: http://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticConfiguration
Où exactement? Il y a souvent confusion sur l'endroit où "dans le classpath". Il ne peut pas être n'importe où. Il doit être au "top", ou le "package par défaut'.
Une astuce pour les utilisateurs d'eclipse:
Clic droit sur le projet et cliquez sur "actualiser". Assurez-vous que vous pouviez voir l'log4j2.xml fichier eclipse.
(Cela a résolu mon problème.)
Soit détaillé:
Vous ne devez pas ajouter le fichier de build path.(Si vous le faites, eclipse va vous avertir à ce sujet)
Le nom de ce fichier n'apparaît pas dans '.classpath' fichier.
Je suis sûr que vous devez écrire le nom complet de la classe dont les messages que vous souhaitez être connecté à quelque chose comme
com.application.log4jtest.YourClass
. Si cela ne fonctionne pas, essayez de changer le niveau de journal.Également juste un avis - vous pouvez aussi écrire
J'ai eu le même problème. J'ai mis le fichier dans le dossier src et cela a fonctionné. Je n'ai pas parlé d'une quelconque nom du paquet dans le log4j2.xml fichier.
J'ai eu le problème, j'ai essayé plusieurs solutions, mais seulement que cela a fonctionné pour moi:
Aller à web.xml et d'ajouter ce paramètre:
Ok, j'ai résolu le problème.
J'ai eu de spécifier dans le fichier xml du package="myPackage"
Dans la documentation de log4j 2: http://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticConfiguration
mais il ne fonctionne pas avec classpath. Au lieu de cela, si nous le gardons dans le dossier src, puis il travaille.
problème similaire est mentionné ici : https://issues.apache.org/jira/browse/LOG4J2-357
J'ai aussi été confronté au même problème.J'ai gardé mon log4j2.xml fichier dans la variable d'environnement Système.
Nom de la Variable : sys_logroot valeur de la Variable : D:\user\gouse
et pas de journaux sont créés pour moi.
utiliser la variable système
-Dlog4j.configurationFile=path/to/log4j2.xml
Voir iciCe résoudre mon problème