Peut-être que cela semble idiot de demander cela, mais je suis confus. J'ai fait référence à Configuration de la propriété Log4j mais cela ne semble pas aider.
J'ai écrit un simple service Web HelloWorld. Et tout en l'exécutant, j'obtiens l'erreur quelque chose comme ceci:
log4j: AVERTISSEMENT Aucun appender n'a été trouvé pour l'enregistreur (org.Apache.axis.transport.http.AxisServlet). log4j: WARN Veuillez initialiser correctement le système log4j.
Je ne sais pas pourquoi cela se produit.
Je génère le service Web à l'aide d'Eclipse et déployé dans Tomcat 6.0. Je vérifie Axis Developer's Guide et selon eux
log4j.configuration = log4j.properties Utilisez cette propriété système pour spécifier le nom d'un fichier de configuration Log4J. S'il n'est pas spécifié, le fichier de configuration par défaut est log4j.properties. Un fichier log4j.properties est fourni dans axis.jar.
Je n'ai pas trouvé log4j.properties dans le axis.jar
.
Une aide à ce sujet?
Ces messages sont quelque chose de délicat, suffisamment pour que les gens le créent pour le rendre plus clair: https://issues.Apache.org/bugzilla/show_bug.cgi?id=25747
Ce qui est délicat, c'est que les avertissements sont écrits si Log4j ne trouve pas son log4j.properties
(ou log4j.xml
), mais aussi si le fichier est fin et dandy mais que son contenu n'est pas complet du point de vue de la configuration.
Le paragraphe suivant est tiré d'ici: http://svn.Apache.org/repos/asf/logging/log4j/tags/v1_2_9/docs/TROUBLESHOOT.html
La sortie de journalisation est écrite sur une cible à l'aide d'un appender. Si aucun ajout n'est attaché à une catégorie ni à aucun de ses ancêtres, vous obtiendrez le message suivant lorsque vous essayez de vous connecter:
log4j: No appenders could be found for category (some.category.name).
log4j: Please initialize the log4j system properly.
Log4j n'a pas de cible de journalisation par défaut. Il est de la responsabilité de l'utilisateur de s'assurer que toutes les catégories peuvent hériter d'un appender. Ceci peut être facilement réalisé en attachant un appender à la catégorie racine.
Vous pouvez trouver des informations sur la configuration de l'enregistreur racine (log4j.rootLogger
) dans le log4j documentation , ajoutant quelque chose d'aussi simple que cela au début du fichier:
log4j.rootLogger=debug, stdout
log4j.appender.stdout=org.Apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.Apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
Cela devrait effacer les messages WARN que vous obtenez au démarrage (assurez-vous que vous n'avez pas déjà un appender nommé stdout
; faites également attention du niveau que vous donnez à l'enregistreur racine, debug
sera très détaillé et chaque bibliothèque de votre application commencera à écrire des choses sur la console).
En ce qui concerne le log4j.properties
/log4j.xml
, Je vous suggère de placer ce fichier dans /WEB-INF/classes
car il est important de l'exposer pour différents réglages (activation/désactivation des journaux, modification des niveaux de journaux, etc.). Vous pouvez également l'avoir dans un JAR dans le chemin de classe (comme vous l'avez spécifié dans votre commentaire), mais il sera inclus dans l'archive (si tout va bien au bon endroit dans l'archive) et ne sera pas aussi facile à manipuler que s'il étaient en /WEB-INF/classes
.
Vous devez créer votre propre log4j.properties
dans le dossier classpath.
Eh bien, si vous aviez déjà créé le log4j.properties, vous ajouteriez son chemin au chemin de classe afin qu'il soit trouvé lors de l'exécution.
Oui, le machin recherchera ce fichier dans le chemin de classe.
.
Créez-le quelque part et ajoutez-le à votre chemin de classe. Mettez-le par exemple, dans c: /proj/resources/log4j.properties
Dans votre chemin de classe, vous ajoutez simplement .......; c:/proj/resources
# Root logger option
log4j.rootLogger=DEBUG, stdout, file
# Redirect log messages to console
log4j.appender.stdout=org.Apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.Apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.Apache.log4j.RollingFileAppender
log4j.appender.file.File=c:/project/resources/t-output/log4j-application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.Apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Si la déclaration ci-dessous est présente dans votre classe, votre log4j.properties doit se trouver dans le dossier Java source (src), s'il s'agit d'un exécutable jar, il doit être compressé dans jar et non dans un fichier séparé.
static Logger log = Logger.getLogger(MyClass.class);
Merci,
Avertissement Aucun appender n'a été trouvé pour l'enregistreur signifie que vous utilisez log4j
système d'enregistrement, mais vous n'avez ajouté aucun Appender (tel que FileAppender, ConsoleAppender, SocketAppender, SyslogAppender, etc.) dans votre fichier de configuration ou le fichier de configuration est manquant.
Il existe trois façons de configurer log4j: avec un fichier de propriétés (log4j.properties
), Avec un fichier XML et via Java code (rootLogger.addAppender(new NullAppender());
).
Si un fichier de propriétés est présent (par exemple lors de l'installation de Solr), vous devez placer ce fichier dans votre répertoire classpath .
Voici quelques suggestions de commandes pour déterminer la valeur de votre chemin de classe:
$ echo $CLASSPATH
$ ps wuax | grep -i classpath
$ grep -Ri classpath /etc/tomcat? /var/lib/tomcat?/conf
ou à partir de Java: System.getProperty("Java.class.path")
.
Si vous utilisez Tomcat, vous pouvez placer votre log4j.properties
Dans: /usr/share/tomcat?/lib/
Ou /var/lib/tomcat?/webapps/*/WEB-INF/lib/
Dossier.
Pour référence, Solr log4j.properties
Ressemble à:
# Logging level
solr.log=logs/
log4j.rootLogger=INFO, file, CONSOLE
log4j.appender.CONSOLE=org.Apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.Apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n
#- size rotation with log cleanup.
log4j.appender.file=org.Apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9
#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.Apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n
log4j.logger.org.Apache.zookeeper=WARN
log4j.logger.org.Apache.hadoop=WARN
# set to INFO to enable infostream log messages
log4j.logger.org.Apache.solr.update.LoggingInfoStream=OFF