log4j: WARN Aucun auteur n’a été trouvé pour logger dans web.xml

J’ai déjà mis log4jConfigLocation dans web.xml, mais je reçois toujours l’avertissement suivant:

log4j:WARN No appenders could be found for logger ⤦ ⤥ (org.springframework.web.context.ContextLoader). log4j:WARN Please initialize the log4j system properly. 

Qu’est-ce que j’ai raté?

     contextConfigLocation  /WEB-INF/applicationContext.xml    log4jConfigLocation /WEB-INF/classes/log4j.properties    org.springframework.web.util.Log4jConfigListener     org.springframework.web.context.ContextLoaderListener    suara2  org.springframework.web.servlet.DispatcherServlet    suara2 /*   

Si c’est le fichier entier de log4j.properties, il semble que vous ne créiez jamais de journal. Vous avez besoin d’une ligne comme:

 log4j.rootLogger=debug,A1 

J’ai log4j.properties au bon endroit dans le classpath et j’ai toujours cet avertissement avec tout ce qui l’utilisait directement. Le code en utilisant log4j via commons-logging semblait être correct pour une raison quelconque.

Si tu as:

 log4j.rootLogger=WARN 

Changez le pour:

 log4j.rootLogger=WARN, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n 

Selon http://logging.apache.org/log4j/1.2/manual.html :

L’enregistreur racine est anonyme, mais vous pouvez y accéder avec la méthode Logger.getRootLogger (). Il n’y a aucun appender par défaut attaché à root.

Cela signifie que vous devez spécifier un appender, un appender, au logger racine pour que la journalisation se produise.

L’ajout de cette console à l’applet rootLogger fait disparaître cette plainte.

Vous pouvez obtenir cette erreur lorsque vos log4j.properties ne sont pas présentes dans le log4j.properties .

Cela signifie que vous devez déplacer le log4j.properties dans le dossier src et définir la sortie dans le dossier bin afin qu’au moment de l’exécution, log4j.properties soit lu dans le dossier bin et que votre erreur soit résolue facilement.

Vous verrez cet avertissement si log4j ne peut pas trouver un fichier “log4j.properties” ou “log4j.xml” n’importe où.

Ou, vous pourriez faire ce que j’ai fait et définir le logger avant le chargement du fichier de configuration du journal. Ce serait comme ils disent: “Mettre la charrue avant les bœufs”.

Dans le code:

 public static Logger logger = Logger.getLogger("RbReport"); 

… plus tard

 PropertyConfigurator.configure(l4j); logger = Logger.getLogger("RbReport"); 

Le correctif consistait à initialiser l’enregistreur une fois la configuration chargée.

Pour les geeks, c’était “Putting Descarte b4 d horse”.

Si vous souhaitez configurer les applications log4j autonomes, vous pouvez utiliser le BasicConfigurator. Cette solution ne sera pas adaptée aux applications Web telles que l’environnement Spring.

Vous devez écrire-

 BasicConfigurator.configure(); 

ou

 ServletContext sc = config.getServletContext(); Ssortingng log4jLocation = config.getInitParameter("log4j-properties-location"); Ssortingng webAppPath = sc.getRealPath("/"); Ssortingng log4jProp = webAppPath + log4jLocation; PropertyConfigurator.configure(log4jProp); 

Si toujours de l’aide, vérifiez le nom de l’archive, il doit être exact “log4j.properties” ou “log4j.xml” (sensible à la casse), et suivez les conseils de “Alain O’Dea”. J’obtiens la même erreur, mais après ces modifications, tout fonctionne bien. juste comme un charme :-). J’espère que cela t’aides.

Dans mon cas, la solution était facile. Vous n’avez pas besoin de déclarer quoi que ce soit dans votre web.xml .

Comme votre projet est une application Web, le fichier de configuration doit être sur WEB-INF/classes après le déploiement. Je vous conseille de créer un dossier de ressources Java ( src/main/resources ) pour cela (meilleure pratique). Une autre approche consiste à placer le fichier de configuration dans votre src/main/java .

Attention au nom du fichier de configuration. Si vous utilisez XML, le nom du fichier est log4j.xml , sinon log4j.properties .

Mettez ces lignes au début de web.xml

   org.springframework.web.util.Log4jConfigListener   log4jConfigLocation classpath:/main/resources/log4j.xml  

Voir ce lien pour plus de détails: http://mariemjabloun.blogspot.com/2014/04/resolved-log4jwarn-no-appenders-could.html

OK, je vois beaucoup de réponses et certaines très correctes. Cependant, aucun n’a résolu mon problème. Le problème dans mon cas était que les permissions du système de fichiers UNIX contenaient le fichier log4j.properties que je modifiais sur le serveur, comme appartenant à root. et lisible par root uniquement. Toutefois, l’application Web que je déplaçais vers tomcat ne pouvait pas lire le fichier car Tomcat s’exécute en tant qu’utilisateur tomcat sur les systèmes Linux par défaut. J’espère que cela t’aides. La solution consistait donc à taper «chown tomcat: tomcat log4j.properties» dans le répertoire où réside le fichier log4j.properties.

J’ai eu le même problème . Mêmes parameters de configuration et même message d’avertissement. Ce qui a fonctionné pour moi a été: Changer l’ordre des entrées.

  • J’ai mis les entrées pour la configuration du journal [le paramètre context et le programme d’écoute] en haut du fichier [avant l’entrée pour le fichier applicationContext.xml] et cela a fonctionné.

La commande compte, je suppose.

Ajoutez log4jExposeWebAppRoot -> false dans votre web.xml. Ça marche avec moi 🙂

  log4jConfigLocation path/log4j.properties   log4jExposeWebAppRoot false   org.springframework.web.util.Log4jConfigListener  

Vous pouvez append cette ligne dans votre fichier xml

 < ?xml version="1.0" encoding="UTF-8"?> < !DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> 

Et assurez-vous que le fichier xml est sous le dossier src