[Log4j] Externaliser nom du fichier de log
Bonjour,
je fais actuellement des essais avec log4j.
J'aimerai utiliser un fichier de parametrage log4j.xml dont voici le code
Code:
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- ================================= -->
<!-- Preserve messages in a local file -->
<!-- ================================= -->
<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
<!-- <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/> -->
</layout>
</appender>
<appender name="fileinfoup" class="org.apache.log4j.FileAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
</layout>
</appender>
<appender name="filedebug" class="org.apache.log4j.FileAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="levelToMatch" value="DEBUG"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<!-- ================ -->
<!-- Limit categories -->
<!-- ================ -->
<!-- ======================= -->
<!-- Setup the Root category -->
<!-- ======================= -->
<!-- <category name="com.monoprix" additivity="false">-->
<!-- <priority value="INFO" /> -->
<!-- <appender-ref ref="CONSOLE"/> -->
<!-- </category>-->
<root>
<appender-ref ref="console"/>
<appender-ref ref="fileinfoup"/>
<appender-ref ref="filedebug"/>
</root>
</log4j:configuration> |
Le problème c'est que j'aimerai externaliser le paramètre du fichier de l'appender 'filedebug'
Voici ma methode de test
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
public static void main(String[] args) {
Logger logger = Logger.getLogger(Test.class);
FileAppender fileAppender = (FileAppender) logger.getAppender("filedebug");
fileAppender.setFile("G:/test.log");
logger.addAppender(fileAppender);
logger.debug("999 AVENUE DE LA REPUBLIQUELES ALLEES DU PARC----");
String adresse="999 AVENUE DE LA REPUBLIQUELES ALLEES DU PARC----";
if(adresse.length()>50){
adresse = adresse.substring(0,47);
adresse = adresse+"...";
logger.debug(adresse.length());
}
}
} |
Avec ce code j'ai un nullPointerException... En effet la variable fileAppender est null. Comment faire pour pouvoir paramétrer le fichier de sortie en dehors du fichier xml.
Merci