$ 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.
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
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Pour travailler avec la version 2 de log4j aka "log4j2"
-Dlog4j.configuration=
devrais lire
-Dlog4j.configurationFile=
log4j:WARN ....
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.
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>
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>
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>
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>
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:
Des articles que je vérifie,
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
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"));
<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.
J'ai résolu ce problème en configurant le chemin de compilation. Voici les étapes que j'ai suivies: In Eclipse.
Maintenant, vous devriez pouvoir courir