2009-11-12 5 views
52

Je l'ai rencontré le bug suivant:Comment modifier le niveau de journalisation d'un package à l'aide de Log4j?

http://issues.apache.org/jira/browse/AXIS2-4363

Il déclare ce qui suit:

Cette erreur se produit uniquement lorsque le niveau de journal pour org.apache.axiom est DEBUG donc une solution de contournement est de définir le niveau de consignation> DEBUG.

Ma question est COMMENT est-ce que je vais faire ça? J'ai parcouru mes répertoires pour un fichier de propriétés ou quelque chose et j'ai cherché à voir s'il y avait quelque chose que je pourrais définir dans le code, mais je n'ai vraiment aucune idée de ce que je fais. Je cours une application de console sur mon bureau tout en essayant de faire fonctionner ceci.

Mise à jour 1: J'ai remarqué que mon répertoire Axis2 possède son propre fichier log4j.properties à sa racine. Est-ce que cela est ignoré en toute sécurité ou fait-il partie de la solution (ou d'une partie du problème)?

Mise à jour 2: Le fichier de niveau racine log4j.properties n'est pas renseigné correctement. il ressemble à ce moment ceci:

log4j.rootLogger=DEBUG, R 
log4j.logger.org.apache.axiom=WARN 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

mais qui est apparemment mal que ce code retourne « Log niveau est nul »:

System.out.println("Log level is " + logger.getLevel()); 

Pour l'instant je suis en train de niveau de code de connexion à l'aide

Logger logger = Logger.getLogger("org.apache.axiom"); 
logger.setLevel(Level.WARN); 
+0

Je encore des problèmes avec - je l'ai ajouté un fichier log4j.properties à la racine de l'application de la console mais ni l'ajout log4j.rootLogger = WARN, R ou log4j.logger.org.apache.axiom = WARN semblent faire n'importe quoi - j'ai la même erreur qu'avant. –

Répondre

52

Quel serveur d'applications utilisez-vous? Chacun place sa configuration de journalisation dans un endroit différent, bien que la plupart utilisent aujourd'hui Commons-Logging comme enveloppe autour de Log4J ou java.util.logging. En utilisant Tomcat comme exemple, this document explique les options de configuration de la consignation à l'aide de l'une ou l'autre option. Dans les deux cas, vous devez trouver ou créer un fichier de configuration qui définit le niveau de journalisation pour chaque package et chaque emplacement que le système de journalisation affiche les informations de journal (généralement console, fichier ou db).

Dans le cas de log4j ce serait le fichier log4j.properties, et si vous suivez les instructions dans le lien ci-dessus votre fichier va commencer à ressembler à:

log4j.rootLogger=DEBUG, R 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=${catalina.home}/logs/tomcat.log 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

simple serait de changer la ligne :

log4j.rootLogger=DEBUG, R 

à quelque chose comme:

log4j.rootLogger=WARN, R 

Mais si vous voulez toujours votre o WN sortie de niveau DEBUG à partir de vos propres classes ajouter une ligne qui dit:

log4j.category.com.mypackage=DEBUG 

lecture un peu sur Log4J et Commons-Logging vous aidera à comprendre tout cela.

+0

En ce moment j'essaye juste d'exécuter du code comme application de console. Je vais voir si je peux comprendre où le fichier log4j.properties devrait aller. Merci. –

+1

+1 Bonne information, merci –

+3

La catégorie est déconseillée dans log4j avec logger – janwen

7

J'ai rencontré exactement le même problème aujourd'hui, Ryan.

Dans mon src (ou votre racine) répertoire, mes log4j.properties fichier a maintenant l'ajout suivant

# https://issues.apache.org/jira/browse/AXIS2-4363 
log4j.category.org.apache.axiom=WARN 

Merci pour le heads up quant à la façon de ce faire, Benjamin.

3

Ce travail pour mon:

log4j.logger.org.hibernate.type=trace 

peut aussi essayer:

log4j.category.org.hibernate.type=trace 
0

définir la propriété système log4j.debug = true. Ensuite, vous pouvez déterminer où votre configuration est en cours d'exécution.

2

Je viens de rencontrer le problème et je ne pouvais pas comprendre ce qui n'allait pas même après avoir lu tout ce qui précède et tout ce qui existe. Ce que je faisais était

  1. Définir le niveau WARN
  2. Définir le niveau de journal de package à DEBUG

Chaque implémentation de journalisation des logger root a sa propre façon de le mettre par propriétés ou via le code (lot de l'aide disponible à ce sujet)

Indépendamment de tout ce qui précède je ne recevrais pas les journaux dans ma console ou mon fichier journal. Ce que j'avais oublié était le plus bas ...


enter image description here


Tout ce que je faisais avec le jongleries ci-dessus était le contrôle que la production des journaux (à la racine/paquet/etc classe), à gauche de la ligne rouge dans l'image ci-dessus. Mais je ne changeais pas la façon d'afficher/consommer les bûches du même, à droite de la ligne rouge dans l'image ci-dessus. Handler (Consommation) est généralement défini par défaut sur INFO, par conséquent vos précieuses instructions de débogage ne seront pas disponibles. Consommation/affichage est contrôlé en définissant les niveaux de journal pour les gestionnaires (ConsoleHandler/FileHandler etc ..) Alors je suis allé de l'avant et de définir les niveaux de tous les journaux de mes gestionnaires pour le meilleur et tout a fonctionné.

Ce point n'a pas été précisé d'une manière précise dans n'importe quel endroit. J'espère que quelqu'un se gratter la tête, en pensant que les propriétés ne fonctionnent pas, trouvera ce petit truc utile.

Questions connexes