Aucun fichier de configuration log4j2 trouvé. Utilisation de la configuration par défaut: journalisation des erreurs uniquement 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 parsable:

    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.
33
demandé sur Jeff Maass 2015-02-18 01:57:04

9 réponses

Je m'occupe de ce problème depuis un moment. J'ai tout changé comme décrit dans ce post et même l'erreur de pensée s'est produite. Dans ce cas, assurez-vous de nettoyer le projet lorsque vous changez les paramètres .xml ou .fichier de propriétés. Dans l'environnement eclipse. Choisir Projet - > Propre

2
répondu Phatee P 2016-07-12 10:28:46

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 alias "log4j2"

-Dlog4j.configuration=

doit se lire

-Dlog4j.configurationFile=

problème 2

log4j:WARN ....

Solution 2

dans votre projet, n'incluez pas le jar log4j-1.2 mais le log4j-1.2-api-2.1.pot. Je ne savais pas comment exclure le log4j 1.2. Je savais que quelle dépendance de mon projet en avait besoin. Donc, avec un peu de lecture, j'exclus un tas de trucs.

<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 passe à 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>

maintenant, les 1,2 logs qui n'allaient qu'à la console vont en fait vers notre 2.x appenders.

41
répondu Jeff Maass 2015-11-11 18:18:36

si vous n'avez pas la fortune du log4j-1.2.jar sur votre chemin de classe comme Renko souligne dans son commentaire , vous ne verrez que le message pas de 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 trouve le problème au démarrage.

par exemple si vous avez un log4j2.le fichier yaml que log4j2 ne traite pas, parce que par exemple, vous n'avez pas configuré un analyseur YAML pour votre projet , ou votre configuration est tout simplement incorrecte. Vous rencontrerez le message no log4j2 fichier de configuration trouvé , sans plus d'informations. C'est le cas même si vous avez un log4j2 valide.fichier xml, car log4j2 ne tentera que de traiter le premier fichier de configuration qu'il trouve .

j'ai trouvé le meilleur moyen de résoudre le problème est d'indiquer explicitement le fichier de configuration que vous souhaitez utiliser selon l'argument de ligne de commande mentionné au-dessus de .

-Dlog4j.configurationFile=

espérons que cela vous aidera à déterminer si le problème est réellement causé par le fait que votre classloader ne trouve pas le fichier de configuration log4j2 ou quelque chose d'autre dans votre configuration.

mise à Jour

vous pouvez également utiliser la propriété ci-dessous pour changer la valeur par défaut niveau de l'enregistreur de statut pour obtenir plus d'informations:

-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=<level>
9
répondu Conor Svensson 2017-05-23 12:18:09

j'utilise hive jdbc dans un projet java maven et j'ai les mêmes problèmes.

ma méthode est d'ajouter un log4j2.xml fichier src/main/java/ressources

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>
3
répondu LuQQiu 2018-02-22 23:33:06

dans mon cas, j'utilise le fichier log4j2 Json log4j2.json dans la classe de mon projet gradle et j'ai eu la même erreur.

la solution ici était d'ajouter une dépendance pour la gestion de JSON à mes dépendances Grad.

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 documentation de log4j2 :

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

1
répondu High6 2016-11-04 11:38:48

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

il suffit D'ajouter un fichier xml sous 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
répondu komal sarode 2018-05-09 12:23:22

Fourre-je vérifier,

1) Vérifiez qu'il n'y a pas de versions oder 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 règle log4j2.JSON correctement, 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 drôle est pour 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>

This pourrait jeter une exception si ne peut pas trouver l'analyseur json

[Fatal Error] log4j2.json:1:1: Content is not allowed in prolog.
0
répondu prayagupd 2016-11-25 18:30:43

j'ai résolu ce problème en configurant le chemin de compilation. Voici les étapes que j'ai suivi: Dans eclipse.

  1. créez un dossier et enregistrez le fichier logj4 qui s'y trouve.
  2. cliquez sur L'écriture dans le dossier créé et allez construire le chemin.
  3. cliquez sur Ajouter un dossier
  4. Choisissez le dossier créé.
  5. cliquez sur ok et appliquer et fermer.

Maintenant vous devriez être capable d'exécuter

0
répondu Alex Santos 2017-12-06 10:20:35

j'ai eu le même problème, mais j'ai remarqué que je n'ai pas de log4j2.xml dans mon projet après avoir lu sur le net à propos de ce problème, j'ai donc copié le code correspondant dans un bloc-notes et j'ai retourné le fichier Bloc-notes en xml et l'ai ajouté à mon projet sous les ressources du dossier. il fonctionne 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>
0
répondu kykbr 2018-08-03 12:19:47