Log4j : je ramasse TOUS les logs générés par log4j, ça fait trop ! - Java - Programmation
Marsh Posté le 14-04-2003 à 17:01:45
j'ai trouve un lien qui parlait de ca justement tout a l'heure, mais je l'ai au boulot, je pourrait te le filer demain (vers 3h heure francaise donc...desole, decalage horaire )
Marsh Posté le 14-04-2003 à 17:05:48
tu changes la categorie ...
Code :
|
tiens j'ai déjà vu ce code là quelque part
Marsh Posté le 14-04-2003 à 17:18:32
DarkLord a écrit : tu changes la categorie ...
|
Ha oui !? tu crois ?Je vois pas où tu as pu le voir !
D'ailleurs, au passage, j'ai lu dans la doc qu'il vaut mieux utiliser la classe Logger que Category maintenant. Logiquement, dans les fichiers de config aussi, tu crois pas ?
Et merci pour ta réponse bien sûr.
Marsh Posté le 14-04-2003 à 17:20:28
Au départ, c ce que je pensais faire : changer le nom du Logger (Category) "root", mais g été troublé quand j'ai vu qu'au départ, dans la config "standard" que tu m'avais filée, le nom est "org.apache.log4j.xml" !?
Marsh Posté le 14-04-2003 à 22:41:29
El_gringo a écrit : |
Category est un Logger, et à priori, au niveau config, ils n'ont pas changé le nommage.
Marsh Posté le 15-04-2003 à 08:51:43
the real moins moins a écrit : Category est un Logger, et à priori, au niveau config, ils n'ont pas changé le nommage. |
J'dirais plutôt que Logger est une Category, vu qu'il en hérite. Enfin, c peu être du chippotage, ms qd même!
Marsh Posté le 15-04-2003 à 09:04:39
El_gringo a écrit : Au départ, c ce que je pensais faire : changer le nom du Logger (Category) "root", mais g été troublé quand j'ai vu qu'au départ, dans la config "standard" que tu m'avais filée, le nom est "org.apache.log4j.xml" !? |
oui c'est entièrement ma faute et c'était à mes débuts de log4j. Je concède que ca complique plus qu'autre chose.
En gros ce que tu dois faire si tu veux des logs divers pour une meme application:
1/ Definir un appender qui représente l'output (typiquement un fichier avec un patterlayout)
2/ Attacher à chaque appender une catégorie qui donne:
- la racine des classes qui sont traitées par cette catégorie (par exemple org.apache.axis est utilisé pour loguer tout le traffic SOAP)
3/ Ajouter l'attribut additivity="false" si tu ne veux pas que tes logs soient dupliqués 300 *
4/ Avoir une catégorie "par défaut" où les autres logs vont et y attacher le root
Ca te donne un truc du genre
Code :
|
tu vois que par exemple je n'ai pas envie de me chopper les logs du framework donc je garde l'appender par défaut mais je mets la priorité à warning de sorte que debug/info soient droppés
Marsh Posté le 22-04-2003 à 17:29:20
Mais ce que je voudrais moi, c'est que Tomcat garde sa config par défaut de log4j, et que moi, je puisse configurer uniquement les logger utilisés par ma webapp (logger dont le nom commence par "com.maboite.monappli" ).
Quand je fais ça :
|
ça écrit encore les messages générés par Tomcat, mais en plus, ça écrit 2 fois les mienx (ceux issus de logger dont le nom commence pas "com.maboite.monappli" ).
Tu vois une explication ? Une solution à ça ?
Marsh Posté le 23-04-2003 à 08:39:08
bin tu as une config de log4j par virtual machine
donc si tu fait un DOMConfigurator dans une de tes servlets bin c'est ce fichier là qui est utilisé quoi
enlève déjà l'élément root dans le fichier de conf (tu définis uniquement tes categories et appenders
et je t'ai dit d'ajouter additivity="false" pour ne pas avoir les logs en doublons
<category name="com.masociete.soft.sms.persistence" additivity="false">
<appender-ref ref="persistence" />
</category>
Marsh Posté le 23-04-2003 à 09:07:25
Merde, c'est vrai que tu me l'avais dit. J'suis vraiment désolé.
Merci.
Marsh Posté le 14-04-2003 à 16:48:27
Alors, je configure mon log comme ceci :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<appender name="A_1" class="org.apache.log4j.DailyRollingFileAppender">
<!-- La valeur suivante est le chemin du fichier dans lequel le log sera inscrit.
Chemin complet imperatif.
Ne pas oublier de doubler les "\"
-->
<param name="File" value="C:\\Tomcat4\\logs\\LdsWeb2.log" />
<param name="Append" value="true" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%c{3}] - %m%n"/>
</layout>
</appender>
<category name="org.apache.log4j.xml">
<appender-ref ref="A_1" />
</category>
<root>
<!-- La valeur suivante est le niveau du log.
Valeurs possible : "debug", "info", "warn", "error'
-->
<priority value ="warn" />
<appender-ref ref="A_1" />
</root>
</log4j:configuration>
Apparement, Tomcat 4.1 utilise Log4j aussi. Avec la config que j'ai là, je me ramsse TOUS les logs de tomcat, alors que le log est censé être celui de ma webapp uniquement.
Dans mon appli, j'ai bien géré les histoires de hiérarchie de Logger, en donant à chacun d'eux le nom complet de la classe à laquelle ils appartiennent.
Du coup, il faudrait que j'arrive à préciser que la config ci-dessus ne concerne QUE les Logger "com.monapp". Je sais que c possible, ms j'arrive pas à trouver comment. Helllp !
Message édité par El_gringo le 14-04-2003 à 16:59:34