Bonjour,

Je travaille actuellement sur une application web (JSF + Spring + Hibernate sur Tomcat), et j'essaye vainement de logger mes messages avec Log4J.

Voici mon fichier de conf :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" reset="true" threshold="all" debug="true">
 
    <appender name="filedebug" class="org.apache.log4j.FileAppender">
        <param name="file" value="K:\\Appli\\logs\\debug.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%c] %-5p - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelMatchFilter">
            <param name="levelToMatch" value="DEBUG"/>
        </filter>
        <filter class="org.apache.log4j.varia.StringMatchFilter">
            <param name="StringToMatch" value="Appli:" />
            <param name="AcceptOnMatch" value="true" />
        </filter>
        <filter class="org.apache.log4j.varia.DenyAllFilter"/>
    </appender>
    <appender name="fileinfoup" class="org.apache.log4j.FileAppender">
        <param name="file" value="K:\\Appli\\logs\\infoup.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%c] %-5p - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="levelMin" value="INFO"/>
            <param name="levelMax" value="FATAL"/>
        </filter>
        <filter class="org.apache.log4j.varia.StringMatchFilter">
            <param name="StringToMatch" value="Appli:" />
            <param name="AcceptOnMatch" value="true" />
        </filter>
        <filter class="org.apache.log4j.varia.DenyAllFilter"/>
    </appender>
 
    <logger name="AppliLogger" additivity="true">
        <level value="DEBUG"/>
        <appender-ref ref="filedebug" />
        <appender-ref ref="fileinfoup"/>
    </logger>
    <root>
        <appender-ref ref="fileinfoup"/>
        <appender-ref ref="filedebug" />
    </root>
</log4j:configuration>
Les problèmes sont que :
- Les logs n'apparaissent dans mes fichiers qu'à l'arrêt du serveur, même en utilisant les champ "ImmediateFlush" et "bufferedIo" ça ne change rien.
- En développement, j'utilise Eclipse et le plugin Tomcat, et j'aimerais éviter de mettre un chemin de fichier dans le fichier de configuration log4j. Est-ce qu'en production un chemin relatif conviendrait ?

Voici la sortie de la console après chargement du fichier de configuration
log4j: reset attribute= "true".
log4j: Threshold ="all".
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [AtoriLogger] additivity to [true].
log4j: Level value for AppliLogger is [DEBUG].
log4j: AppliLogger level set to DEBUG
log4j: Class name: [org.apache.log4j.FileAppender]
log4j: Setting property [file] to [K:\Appli\logs\debug.log].
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} [%c] %-5p - %m%n].
log4j: Setting property [levelToMatch] to [DEBUG].
log4j: Adding filter of type [class org.apache.log4j.varia.LevelMatchFilter] to appender named [filedebug].
log4j: Setting property [stringToMatch] to [Appli:].
log4j: Setting property [acceptOnMatch] to [true].
log4j: Adding filter of type [class org.apache.log4j.varia.StringMatchFilter] to appender named [filedebug].
log4j: Adding filter of type [class org.apache.log4j.varia.DenyAllFilter] to appender named [filedebug].
log4j: setFile called: K:\Appli\logs\debug.log, true
log4j: setFile ended
log4j: Adding appender named [filedebug] to category [AtoriLogger].
log4j: Class name: [org.apache.log4j.FileAppender]
log4j: Setting property [file] to [K:\Appli\logs\infoup.log].
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} [%c] %-5p - %m%n].
log4j: Setting property [levelMin] to [INFO].
log4j: Setting property [levelMax] to [FATAL].
log4j: Adding filter of type [class org.apache.log4j.varia.LevelRangeFilter] to appender named [fileinfoup].
log4j: Setting property [stringToMatch] to [Appli:].
log4j: Setting property [acceptOnMatch] to [true].
log4j: Adding filter of type [class org.apache.log4j.varia.StringMatchFilter] to appender named [fileinfoup].
log4j: Adding filter of type [class org.apache.log4j.varia.DenyAllFilter] to appender named [fileinfoup].
log4j: setFile called: K:\Appli\logs\infoup.log, true
log4j: setFile ended
log4j: Adding appender named [fileinfoup] to category [AppliLogger].
log4j: Adding appender named [fileinfoup] to category [root].
log4j: Adding appender named [filedebug] to category [root].
Quelqu'un saurait-il m'indiquer comment résoudre ces problèmes ?

Je travaille sous Windows Seven, avec Eclipse 3.6.2 Helios.

Merci d'avance pour votre aide.