web-dev-qa-db-fra.com

Log4j 2 ne prend plus en charge le fichier log4j.properties?

J'exécute un exemple en utilisant log4j 2.0-rc1 et log4j.properties fichier, mais log4j lib l'exécute toujours avec la configuration par défaut (niveau du journal, appender, etc.). J'ai également essayé de changer le nom en log4j2.properties et rien ne s'est passé.

24
emanuell

Log4j 2 ne prend plus en charge le format ".properties" de Log4j v1 (pourtant, depuis la version 2.4, Log4j prend en charge un format de propriété, mais sa syntaxe est totalement différente du format v1 ). Les nouveaux formats sont XML, JSON et YAML, voir la documentation (remarque: si vous avez utilisé l'un de ces formats dans un fichier appelé ".properties", cela peut prêter à confusion).

Pour spécifier l'emplacement de votre fichier de configuration, utilisez-vous la propriété système log4j.configurationFile, la classe Log4j ConfigurationFactory, ou autre chose? Avez-vous lu cette page de manuel ? Il explique que: Bien que la syntaxe de configuration de Log4j 2 soit différente de celle de Log4j 1.x, la plupart, sinon toutes, des mêmes fonctionnalités sont disponibles.

Il semble donc qu'un ancien Log4j1.x log4j.propertiesfile n'est pas pris en charge tel quel, il doit être migré au format v2.x. La migration semble assez facile cependant, en regardant l'exemple dans le lien que j'ai donné ci-dessus. En voici un extrait:

Exemple de fichier de configuration Log4j v1.x:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//Apache//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.Apache.org/log4j/'>
    <appender name="STDOUT" class="org.Apache.log4j.ConsoleAppender">
        <layout class="org.Apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
        </layout>
    </appender>
    <category name="org.Apache.log4j.xml">
        <priority value="info" />
    </category>
    <Root>
        <priority value ="debug" />
        <appender-ref ref="STDOUT" />
    </Root>
</log4j:configuration>

Même fichier de configuration migré vers Log4j v2:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
    <Logger name="org.Apache.log4j.xml" level="info"/>
        <Root level="debug">
            <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
</Configuration>
25
xav

Depuis la version 2.4, Log4J2 prend désormais en charge à nouveau les fichiers .property. Voir ici dans la documentation pour configuration de la propriété .

Configuration avec propriétés

Depuis la version 2.4, Log4j prend désormais en charge la configuration via les fichiers de propriétés. Notez que la syntaxe des propriétés n'est PAS la même que celle utilisée dans Log4j 1. Comme les configurations XML et JSON, les configurations de propriétés définissent la configuration en termes de plugins et d'attributs aux plugins.

11
Jack Hughes

Log4j 2 utilise un nouveau format de fichier de configuration. Vous devez utiliser XML (par défaut), JSON (avec des bibliothèques supplémentaires) ou même YAML (encore une fois, les bibliothèques). Découvrez la documentation .

2
Matt