Dernièrement, j'ai décidé d'apprendre à utiliser l'enregistreur log4j2. J'ai téléchargé les fichiers jar requis, créé une bibliothèque, un fichier de configuration xml et essayé de l'utiliser. Malheureusement, je reçois cette déclaration dans la console (Eclipse):
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Voici mon code de classe de test:
package log4j.test;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Log4jTest
{
static final Logger logger = LogManager.getLogger(Logger.class.getName());
public static void main(String[] args) {
logger.trace("trace");
logger.debug("debug");
logger.info("info");
logger.warn("warn");
logger.error("error");
logger.fatal("fatal");
}
}
Et mon fichier de configuration xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration package="log4j.test"
status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="log4j.test.Log4jTest" level="trace">
<AppenderRef ref="Console"/>
</Logger>
<Root level="trace">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
J'ai aussi essayé avec xml sans <Logger>
balises, sans spécification de paquet et dans divers répertoires de dossiers / paquets, mais cela n'a pas aidé. Maintenant, mon log4j2.xml
fichier se trouve directement dans le dossier du projet dans eclipse.
Réponses:
Est-ce un simple projet java eclipse sans maven, etc.? Dans ce cas, vous devrez placer le
log4j2.xml
fichier dans unsrc
dossier afin de pouvoir le trouver sur le chemin de classe. Si vous utilisez maven, mettez-le soussrc/main/resources
ousrc/test/resources
la source
sbt
lelog4j2.xml
vasrc/main/resources
aussi bien.Vous devez choisir l'une des solutions suivantes:
la source
-Dlog4j.configurationFile
c'est ce dont j'avais besoin, car le projet sur lequel je travaille n'est pas basé sur Maven. AwesomeA suivi les documentations - Apache Log4j2 Configuratoin et Apache Log4j2 Maven dans la configuration de log4j2 avec yaml. Selon la documentation, les dépendances maven suivantes sont requises:
et
L'ajout de ces derniers n'a pas choisi la configuration et a toujours donné une erreur. La façon de déboguer la configuration en ajoutant a
-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=TRACE
aidé à voir les journaux. Plus tard, j'ai dû télécharger la source à l'aide de Maven et le débogage a aidé à comprendre les classes dépendantes de log4j2. Ils sont répertoriés dansorg.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory
:L'ajout d'un mappage de dépendances pour
jackson-dataformat-yaml
n'aura pas les deux premières classes. Par conséquent, ajoutez lajackson-databind
dépendance pour faire fonctionner la configuration yaml:Vous pouvez ajouter la version en vous référant à la
Test Dependencies
section de l'log4j-api
élément de version du référentiel MVN . Par exemple, pour la version 2.8.1 de log4j-api, reportez-vous à ce lien et localisez lajackson-databind
version.De plus, vous pouvez utiliser le code Java ci-dessous pour vérifier si les classes sont disponibles dans le classpath:
la source
En plus de ce que Tomasz W a écrit, en démarrant votre application, vous pouvez utiliser les paramètres:
pour obtenir la plupart des problèmes de configuration.
Pour plus de détails, consultez la FAQ Log4j2: Comment déboguer ma configuration?
la source
Eclipse ne verra jamais un fichier tant que vous ne forcerez pas une actualisation de l'EDI. C'est une fonctionnalité! Ainsi, vous pouvez placer le fichier dans tout le projet et Eclipse l'ignorera complètement et lèvera ces erreurs. Appuyez sur Actualiser dans la vue du projet Eclipse, puis cela fonctionne.
la source
Dans mon cas, j'ai dû le mettre dans le dossier bin de mon projet, même le fait que mon chemin de classe soit défini sur le dossier src. Je ne sais pas pourquoi, mais ça vaut le coup d'essayer.
la source