Log4j - problème

lara13 -  
 java4ever -
Bonjour à tous,

Mon problème est très simple. J'utilise log4j dans mon application pour enregistrer dans un fichier des messages de type INFO principalement. Tout marche nickel sauf que lors de l'intégration à l'application finale, je reçois en partie la sortie console dans ce même fichier :

19/07/2011 16:38:10 INFO = Named query checking : enabled
19/07/2011 16:38:10 INFO = building session factory
19/07/2011 16:38:11 INFO = Not binding factory to JNDI, no JNDI name configured

Or, je ne veux que mes INFO à moi, ce que je génère grâce à mon code :
log.getLogger().info("blablabla");

Quelqu'un sait comment faire pour éviter ca ??

Merci d'avance.

1 réponse

java4ever
 
Bonjour,

ça manque un peu d'info, mais la solution va consister à ajouter un appender fichier dans le fichier de configuration log4j et à indiquer des niveaux de log différents pour le logger principal et ton (ou tes loggers perso)
supposons que les log qui t'intéressent sont les loggers qui portent le nom des classes et que ces classes soient dans le package :
"monappli.partieasuivre"
tu crée le fichier log4j.xml (qui doit se trouver dans le classpath) :
Dans cet exemple, la console affichera tous les message de niveau au moins ERROR, alors que ton fichier contiendra seulement les logs à partir de INFO concernant les logger du package monappli.partieasuivre
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

	<!-- Exemple de fichier config log4j pour séparer certains logs  suivre précisement -->
	<!-- On suppose, dans ce cas que les loggers sont fait avec le nom complet de la classe d'appel du log -->
	<!-- Par exemple de cette façon : static Logger log = Logger.getLogger(ClasseCourante.class); -->
	<!-- Appenders -->
	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{dd/MM/yyyy HH:mm:ss}] %-5p : %c{1} - %m %n" />
		</layout>
	</appender>
	<!-- Le fait d'utiliser un DailyRollingFileAppender permet d'avoir un historique -->
	<!-- tournant des fichiers de log sur plusieurs jours -->
	<appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="logs/MesLogs.log" />
		<param name="DatePattern" value="'.'yyyy-MM-dd" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{dd/MM/yyyy HH:mm:ss}] %-5p : %c{1} - %m %n" />
		</layout>
	</appender>

	<!-- Loggers Personnalisés -->
	<logger name="monappli.packagesuivre1">
		<level value="info" />
		<appender-ref ref="file" />
	</logger>
	<!-- Logger global -->
	<root>
		<level value="error" />
		<appender-ref ref="console" />
	</root>
</log4j:configuration>

Tu peux faire différents essais en changeant le niveaux et/ou les "appender_ref" pour voir ce qui se passe.

Cordialement
0