Après avoir ajouté log4j à mon application, j'obtiens la sortie suivante chaque fois que j'exécute mon application:
log4j: AVERTISSEMENT Aucun appender n'a pu être trouvé pour l'enregistreur (slideselector.facedata.FaceDataParser). log4j: WARN Veuillez initialiser correctement le système log4j.
Il semble que cela signifie qu'il manque un fichier de configuration. Où doit se trouver ce fichier de configuration et qu'est-ce qu'un bon contenu de départ?
J'utilise plain java pour développer une application de bureau. Donc pas de serveur web etc ...
configuration
log4j
Janusz
la source
la source
Réponses:
Log4j
recherche par défaut un fichier appelélog4j.properties
oulog4j.xml
sur le chemin de classe.Vous pouvez contrôler le fichier qu'il utilise pour s'initialiser lui-même en définissant les propriétés du système comme décrit ici (recherchez la section "Procédure d'initialisation par défaut").
Par exemple:
Causera
log4j
à la recherche d'un fichier appelé customName sur le chemin de classe.Si vous rencontrez des problèmes, je trouve utile d'activer le log4j.debug:
Il imprimera sur System.out de nombreuses informations utiles sur le fichier qu'il a utilisé pour s'initialiser lui-même, les enregistreurs / appendeurs configurés et comment, etc.
Le fichier de configuration peut être un fichier de propriétés java ou un fichier xml. Voici un exemple du format de fichier de propriétés extrait de la page de documentation de l'intro log4j :
la source
java -Dlog4j.configuration=customName
? J'ai essayé Project / Preferences / Run / Debug Settings, choisi quelques configurations, cliqué sur Edit, onglet Arguments, arguments VM. Le nom personnalisé inclut-il une extension .xml?-Dlog4j.debug
peut aider à déboguer votre configuration.Bien que la configuration correcte de log4j soit idéale pour les "vrais" projets, vous voudrez peut-être une solution rapide et sale, par exemple si vous testez simplement une nouvelle bibliothèque.
Si c'est le cas, un appel à la méthode statique
configurera la journalisation de base sur la console et les messages d'erreur auront disparu.
la source
Logger.getRootLogger().setLevel(Level.INFO);
Si vous vous débarrassez de tout (par exemple si vous êtes en test)
la source
Selon la page FAQ Apache Log4j :
Fondamentalement, l'avertissement Aucun appender n'a été trouvé pour l'enregistreur signifie que vous utilisez le
log4j
système de journalisation, 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 du code Java (rootLogger.addAppender(new NullAppender());
).log4j.properties
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 chemin de classe répertoire .
chemin de classe
Voici quelques suggestions de commandes sous Linux pour déterminer votre valeur de chemin de classe:
ou depuis Java:
System.getProperty("java.class.path")
.Log4j XML
Voici un fichier de configuration XML de base pour log4j au format XML:
Matou
Si vous utilisez Tomcat, vous pouvez placer votre
log4j.properties
dans:/usr/share/tomcat?/lib/
ou/var/lib/tomcat?/webapps/*/WEB-INF/lib/
dossier.Solr
Pour référence, le
log4j.properties
fichier par défaut de Solr ressemble à:Pourquoi log4j ne trouve-t-il pas mon fichier de propriétés dans une application J2EE ou WAR?
Voir également:
la source
Vous pouvez définir l'emplacement de votre log4j.properties depuis l'intérieur de votre application java en utilisant:
Plus d'informations sont disponibles ici: https://logging.apache.org/log4j/1.2/manual.html
la source
import
déclaration est toujours utile car l'achèvement du code n'est pas si fiable.Trouvez un log4j.properties ou log4j.xml en ligne qui a un appender racine et placez-le sur votre chemin de classe.
va se connecter à la console. Je préfère me connecter à un fichier afin que vous puissiez enquêter par la suite.
bien que pour les applications de journalisation détaillées, 100 Ko doivent généralement être augmentés à 1 Mo ou 10 Mo, en particulier pour le débogage.
Personnellement, j'ai configuré plusieurs enregistreurs et défini l'enregistreur racine sur le niveau d'avertissement ou d'erreur au lieu de déboguer.
la source
Une autre façon de le faire sans placer le fichier de propriétés sur le chemin de classe consiste à définir directement la propriété à partir du code java. Voici l exemple de code.
}
la source
Vous pouvez configurer le niveau de journalisation à l'aide de setLevel () .
Les niveaux sont utiles pour définir facilement le type d'informations que vous souhaitez que le programme affiche.
Par exemple:
L'ensemble des niveaux possibles sont:
Selon le manuel Logging Services
la source
la source
System.out
. Le javadoc pour la méthode de configuration sans argument dit:Add a ConsoleAppender that uses PatternLayout using the PatternLayout#TTCC_CONVERSION_PATTERN and prints to System.out to the root category.
Pour l'activer
-Dlog4j.debug
, je vais dans Système, Paramètres système avancés, Variables d'environnement et définissez la variable système_JAVA_OPTIONS
sur-Dlog4j.debug
.la source
Dans quoi développez-vous? Utilisez-vous Apache Tomcat?
J'ai des propriétés comme celle-ci dans une de mes applications Java.
la source
Mon log4j a été corrigé par le fichier de propriétés ci-dessous:
la source
J'ai créé le fichier log4j.properties dans le dossier des ressources à côté du fichier hibernate.cfg.xml et l' ai rempli avec le texte ci-dessous:
maintenant je me suis débarrassé des avertissements et des erreurs
la source
Créez simplement log4j.properties sous le dossier src / main / assembly. Selon que vous souhaitez afficher les messages de journal dans la console ou dans le fichier, vous modifiez votre fichier. Ce qui suit va montrer vos messages dans la console.
la source
Comme expliqué précédemment, il existe 2 approches
La première consiste à simplement ajouter cette ligne à votre méthode principale:
La deuxième approche consiste à ajouter ce fichier log4j.properties standard à votre chemin de classe:
Lors de la seconde approche, vous devez vous assurer d'initialiser correctement le fichier.
Par exemple.
Assurez-vous de créer le dossier requis pour stocker les fichiers journaux.
la source
Essayez de définir l'attribut de débogage dans log4j: node de configuration sur true.
Il imprime des informations à mesure que le fichier de configuration est lu et utilisé pour configurer l'environnement log4j. Vous obtiendrez peut-être plus de détails pour résoudre votre problème.
la source
API de journalisation - L'API de journalisation Java facilite l'entretien et la maintenance des logiciels sur les sites des clients en produisant des rapports de journal adaptés à l'analyse par les utilisateurs finaux, les administrateurs système, les ingénieurs de service sur le terrain et les équipes de développement de logiciels. Les API de journalisation capturent des informations telles que les échecs de sécurité, les erreurs de configuration, les goulots d'étranglement des performances et / ou les bogues dans l'application ou la plate-forme. Le package de base inclut la prise en charge de la livraison d'enregistrements de journal au format texte brut ou XML dans la mémoire, les flux de sortie, les consoles, les fichiers et les sockets. De plus, les API de journalisation sont capables d'interagir avec les services de journalisation qui existent déjà sur le système d'exploitation hôte.
Package java.util.logging «Fournit les classes et les interfaces des principales fonctions de journalisation de la plate-forme Java.
Log4j 1.x «log4j est un utilitaire de journalisation Java populaire. Log4j est un projet open source basé sur le travail de nombreux auteurs. Il permet au développeur de contrôler les instructions de journal qui sont sorties vers divers emplacements à l'aide d'Appender [console, fichiers, base de données et e-mail]. Il est entièrement configurable lors de l'exécution à l'aide de fichiers de configuration externes.
Les fichiers de configuration peuvent être écrits au format XML ou au format des propriétés Java (clé = valeur).
Structure de table MySQL pour table
logdata
la source
La solution pour moi était de mettre "log4j.properties" dans le dossier "src".
la source
Si nous utilisons un wrapper de journalisation apache commons au-dessus de log4j, nous devons avoir les deux pots disponibles dans classpath. Aussi,
commons-logging.properties
etlog4j.properties/xml
devrait être disponible dans classpath.Nous pouvons également transmettre la classe et le
log4j.properties
nom d' implémentation enJAVA_OPTS
utilisant l'un ou l'autre-Dorg.apache.commons.logging.Log=<logging implementation class name> -Dlog4j.configuration=<file:location of log4j.properties/xml file>
. La même chose peut être faite via le réglageJAVA_OPTS
en cas d'application / serveur Web.Cela aidera à externaliser les propriétés qui peuvent être modifiées lors du déploiement.
la source
Il s'agit d'une autre manière d'utiliser .yaml
Structure logique:
Échantillon:
Réf: LOG4J 2 CONFIGURATION: UTILISATION DE YAML
la source
Pour les tests, une méthode rapide comprenant le réglage du niveau de journalisation:
la source
Solution Maven:
Je suis tombé sur les mêmes problèmes que ci-dessus, et pour une solution maven, j'ai utilisé 2 dépendances. Cette configuration est uniquement destinée à des tests rapides si vous souhaitez qu'un projet simple utilise un enregistreur, avec une configuration standard. Je peux imaginer que vous souhaitiez créer un fichier de configuration plus tard si vous avez besoin de plus d'informations et / ou d'affiner vos propres niveaux de journalisation.
la source
Je viens de le faire et le problème a été résolu.
Suivi du blog ci-dessous
https://intellij-support.jetbrains.com/hc/en-us/community/posts/206875685-How-to-fix-log4j-WARN-console-messages-when-running-an-Application-inside-IntelliJ- Idée
Mais ici, il dit comme ci-dessous
Pour résoudre ce problème, entrez simplement le fichier log4j.resources suivant dans le dossier principal / resources de votre projet
au lieu de créer log4j.resources, créez log4j.properties. Clic droit sur la ressource dans IntelliJ -> Nouveau -> Bundle de ressources - Il suffit de le nommer log4j
la source
Si vous rencontrez cette erreur sur Intellij IDEA même après avoir ajouté le
log4j.properties
oulog4j.xml
fichier dans votre dossier de test des ressources, Intellij IDEA n'est peut-être pas encore au courant de l'existence du fichier.Donc, après avoir ajouté le fichier, faites un clic droit sur le fichier et choisissez Recompiler log4j.xml .
la source