web-dev-qa-db-fra.com

Aucun fichier de configuration log4j2 trouvé. Utilisation de la configuration par défaut: enregistrer uniquement les erreurs sur la console

$ Java -Dlog4j.configuration=file:///path/to/your/log4j2.xml -jar /path/to/your/jar_file.jar

Écrit sur la console, vous obtenez

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

Mais, il semble aussi que le fichier de configuration a été trouvé et n'était pas analysable:

    log4j:WARN Continuable parsing error 2 and column 31
    log4j:WARN Document root element "Configuration", must match DOCTYPE root "null".
    log4j:WARN Continuable parsing error 2 and column 31
    log4j:WARN Document is invalid: no grammar found.
    log4j:ERROR DOM element is - not a <log4j:configuration> element.
    log4j:WARN No appenders could be found for logger (kafka.utils.VerifiableProperties).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.Apache.org/log4j/1.2/faq.html#noconfig for more info.
38
Jeff Maass

Je traite ce problème depuis un moment. J'ai tout changé comme décrit dans ce post et même une erreur de pensée est survenue. Dans ce cas, assurez-vous de nettoyer le projet lors de la modification des paramètres dans le fichier .xml ou .properties. ... Dans l'environnement Eclipse. Choisissez Projet -> Nettoyer

3
Phatee P

Problème 1

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

Solution 1

Pour travailler avec la version 2 de log4j aka "log4j2" 

-Dlog4j.configuration=

devrais lire

-Dlog4j.configurationFile=

Problème 2

log4j:WARN ....

Solution 2

Dans votre projet, supprimez le fichier jar log4j-1.2 et incluez plutôt le fichier log4j-1.2-api-2.1.jar. Je ne savais pas exactement comment exclure le log4j 1.2. Je savais que la dépendance de mon projet le nécessitait. Donc, avec un peu de lecture, j'ai exclu un tas de choses.

<dependency>
    <groupId>org.Apache.kafka</groupId>
    <artifactId>kafka_2.10</artifactId>
    <version>0.8.2.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.Apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>                
        </exclusion>
        <exclusion>
            <groupId>org.Apache.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>          
    </exclusions>
</dependency>

Je ne sais pas laquelle des exclusions a fait l'affaire. Séparément, j'ai inclus une dépendance à l'API 1.2 qui relie à 2.x.

<!--
    http://logging.Apache.org/log4j/2.0/manual/migration.html
    http://logging.Apache.org/log4j/2.0/maven-artifacts.html
    Log4j 1.x API Bridge
    If existing components use Log4j 1.x and you want to have this logging
    routed to Log4j 2, then remove any log4j 1.x dependencies and add the
    following.
-->
<dependency>
    <groupId>org.Apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.2</version>
</dependency>

À présent, les journaux 1.2 qui étaient uniquement envoyés à la console sont transmis à nos ajouts 2.x.

50
Jeff Maass

Si vous n'avez pas la fortune du log4j-1.2.jar sur votre chemin de classe, comme le souligne Renko indique dans son commentaire , vous ne verrez que le message no fichier de configuration log4j2 trouvé.

C'est un problème s'il y a une erreur dans votre fichier de configuration, car on ne vous dira pas où se situe le problème au démarrage.

Par exemple, si vous avez un fichier log4j2.yaml que log4j2 ne parvient pas à traiter, par exemple, vous n'avez pas configuré d'analyseur YAML pour votre projet , ou si votre configuration est tout simplement incorrecte. Vous rencontrerez le message [] de fichier de configuration no log4j2 trouvé, sans plus d'informations. Ceci est le cas même si vous avez un fichier log4j2.xml valide, car log4j2 tentera seulement de traiter le premier fichier de configuration trouvé .

J'ai trouvé le meilleur moyen de résoudre le problème est d'indiquer explicitement le fichier de configuration que vous souhaitez utiliser conformément à l'argument de ligne de commande mentionné ci-dessus .

-Dlog4j.configurationFile=

J'espère que cela vous aidera à déterminer si le problème est effectivement causé par votre chargeur de classes qui n'a pas trouvé le fichier de configuration log4j2 ou quelque chose d'autre dans votre configuration.

Mettre à jour

Vous pouvez également utiliser la propriété ci-dessous pour modifier le niveau par défaut du consignateur d'état afin d'obtenir des informations supplémentaires:

-Dorg.Apache.logging.log4j.simplelog.StatusLogger.level=<level>
9
Conor Svensson

J'utilise Hive jdbc dans un projet Java Maven et ai les mêmes problèmes.

Ma méthode consiste à ajouter un fichier log4j2.xml sous src/main/Java/resources

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClassName {
    private static final Logger LOG = LoggerFactory.getLogger(MyClassName.class);
}

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration 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="<your_package_name>.<your_class_name>" level="debug">
        <AppenderRef ref="Console"/>
        </Logger>
        <Root level="WARN">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
4
LuQQiu

j'ai eu le même problème, mais j'ai remarqué que je n'ai pas log4j2.xml dans mon projet après avoir lu sur le net à propos de ce problème, donc j'ai copié le code associé dans un bloc-notes et rétabli le fichier bloc-notes au format xml et ajouter à mon projet sous le ressources de dossier. ça marche pour moi.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration 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>
<Root level="DEBUG">
  <AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
2
kykbr

Je reçois cette erreur parce que le fichier log4j2 a été supprimé de mon dossier src

Ajoutez simplement un fichier xml dans le dossier src

<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
    </Console>

    <RollingFile name="RollingFile" filename="logs/B2CATA-hybrid.log"
        filepattern="${logPath}/%d{yyyyMMddHHmmss}-fargo.log">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
        <Policies>
            <SizeBasedTriggeringPolicy size="100 MB" />
        </Policies>
        <DefaultRolloverStrategy max="20" />
    </RollingFile>

</Appenders>
<Loggers>
   <Logger name="com.pragiti." level="trace" />
    <Root level="info">
        <AppenderRef ref="Console" />
        <AppenderRef ref="RollingFile" />
    </Root>
</Loggers>

1
komal sarode

Dans mon cas, j’utilise le fichier log4j2 Json log4j2.json dans le chemin de classe de mon projet Gradle et j’ai eu la même erreur.

La solution ici consistait à ajouter une dépendance pour la gestion JSON à mes dépendances Gradle. 

compile group:"com.fasterxml.jackson.core", name:"jackson-core", version:'2.8.4'
compile group:"com.fasterxml.jackson.core", name:"jackson-databind", version:'2.8.4'
compile group:"com.fasterxml.jackson.core", name:"jackson-annotations", version:'2.8.4'

Voir aussi la documentation de log4j2 :

Le support JSON utilise le processeur de données Jackson pour analyser le fichier JSON des dossiers. Ces dépendances doivent être ajoutées à un projet qui veut utiliser JSON pour la configuration:

1
H6.

Des articles que je vérifie, 

1) Vérifiez qu’il n’y a pas d’autres versions de log4j.

mvn dependency:tree | grep log
[INFO] +- com.prayagupd:log-service:jar:1.0:compile
[INFO] +- org.Apache.logging.log4j:log4j-api:jar:2.6.2:compile
[INFO] +- org.Apache.logging.log4j:log4j-core:jar:2.6.2:compile
[INFO] |  \- commons-logging:commons-logging:jar:1.1.1:compile

2) assurez-vous que je configure correctement log4j2.json, ce qui est fait avec -Dlog4j.configurationFile = ???

val logConfig: PropertiesConfiguration = new PropertiesConfiguration("application.properties")
System.setProperty("log4j.configurationFile", logConfig.getString("log4j.config.file"))
println("log4j.configurationFile :: " + System.getProperty("log4j.configurationFile"))

ou 

Configurator.initialize(null, logConfig.getString("log4j.config.file"));

3) La vérification la plus amusante concerne l’analyseur pour log4j2.json. Merci à l’équipe log4j de ne pas avoir fourni d’analyseur dans l’API.

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.0</version>
</dependency>

Cela pourrait lancer une exception si vous ne trouvez pas l’analyseur json

[Fatal Error] log4j2.json:1:1: Content is not allowed in prolog.
0
prayagupd

J'ai résolu ce problème en configurant le chemin de compilation. Voici les étapes que j'ai suivies: In Eclipse.

  1. créez un dossier et enregistrez le fichier logj4.
  2. Écrivez, cliquez dans le dossier créé et accédez au chemin de génération.
  3. Cliquez sur Ajouter un dossier
  4. Choisissez le dossier créé.
  5. Cliquez sur ok puis sur Apply et fermez.

Maintenant, vous devriez pouvoir courir 

0
Alex Santos