Log4j : je ramasse TOUS les logs générés par log4j, ça fait trop !

Log4j : je ramasse TOUS les logs générés par log4j, ça fait trop ! - Java - Programmation

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
Reply

Marsh Posté le 14-04-2003 à 16:48:27   

Reply

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 :) )

Reply

Marsh Posté le 14-04-2003 à 17:05:48    

tu changes la categorie ...
 

Code :
  1. <category name="com.tasociete.tonpackage">
  2.     <appender-ref ref="A_1" />
  3.   </category>


 
tiens j'ai déjà vu ce code là quelque part [:meganne]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-04-2003 à 17:18:32    

DarkLord a écrit :

tu changes la categorie ...
 

Code :
  1. <category name="com.tasociete.tonpackage">
  2.     <appender-ref ref="A_1" />
  3.   </category>


 
tiens j'ai déjà vu ce code là quelque part [:meganne]


 
Ha oui !? tu crois ?Je vois pas où tu as pu le voir ! :ange:  
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.

Reply

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" !?

Reply

Marsh Posté le 14-04-2003 à 22:41:29    

El_gringo a écrit :


 
Ha oui !? tu crois ?Je vois pas où tu as pu le voir ! :ange:  
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.

Category est un Logger, et à priori, au niveau config, ils n'ont pas changé le nommage.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

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!

Reply

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 :
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  3. <log4j:configuration>
  4.   <appender name="main" class="org.apache.log4j.DailyRollingFileAppender">
  5.     <param name="File"   value="../log/mr_sms.log" />
  6.     <param name="Append" value="true" />
  7.     <param name="DatePattern" value="'.'yyyy-MM-dd" />
  8.     <layout class="org.apache.log4j.PatternLayout">
  9.       <param name="ConversionPattern" value="%d{ISO8601} [%-9.9t] %-5p %-30.30c - %m%n"/>
  10.     </layout>     
  11.   </appender>
  12.      
  13.   <appender name="persistence" class="org.apache.log4j.DailyRollingFileAppender">
  14.     <param name="File"   value="../log/db_access.log" />
  15.     <param name="Append" value="true" />
  16.     <param name="DatePattern" value="'.'yyyy-MM-dd" />
  17.     <layout class="org.apache.log4j.PatternLayout">
  18.       <param name="ConversionPattern" value="%d{ISO8601} [%-9.9t] %-5p %-30.30c - %m%n"/>
  19.     </layout>     
  20.   </appender>
  21.        
  22.   <appender name="inbound" class="org.apache.log4j.DailyRollingFileAppender">
  23.     <param name="File"   value="../log/parser.log" />
  24.     <param name="Append" value="true" />
  25.     <param name="DatePattern" value="'.'yyyy-MM-dd" />
  26.     <layout class="org.apache.log4j.PatternLayout">
  27.       <param name="ConversionPattern" value="%d{ISO8601} [%-9.9t] %-5p %-30.30c - %m%n"/>
  28.     </layout>     
  29.   </appender>
  30.        
  31.   <appender name="outbound" class="org.apache.log4j.DailyRollingFileAppender">
  32.     <param name="File"   value="../log/file_generator.log" />
  33.     <param name="Append" value="true" />
  34.     <param name="DatePattern" value="'.'yyyy-MM-dd" />
  35.     <layout class="org.apache.log4j.PatternLayout">
  36.       <param name="ConversionPattern" value="%d{ISO8601} [%-9.9t] %-5p %-30.30c - %m%n"/>
  37.     </layout>     
  38.   </appender>
  39.        
  40.   <appender name="sms_api" class="org.apache.log4j.DailyRollingFileAppender">
  41.     <param name="File"   value="../log/sms_api.log" />
  42.     <param name="Append" value="true" />
  43.     <param name="DatePattern" value="'.'yyyy-MM-dd" />
  44.     <layout class="org.apache.log4j.PatternLayout">
  45.       <param name="ConversionPattern" value="%d{ISO8601} [%-9.9t] %-5p %-30.30c - %m%n"/>
  46.     </layout>     
  47.   </appender>
  48.        
  49.   <appender name="console" class="org.apache.log4j.ConsoleAppender">                       
  50.     <layout class="org.apache.log4j.PatternLayout">
  51.       <param name="ConversionPattern" value="[%t] %-5p %35.35c{5} - %m%n"/>
  52.     </layout>     
  53.   </appender>
  54.        
  55.   <category name="com.masociete.soft.sms.persistence" additivity="false">
  56.     <appender-ref ref="persistence" />
  57.   </category>
  58.        
  59.   <category name="com.masociete.soft.sms.inbound" additivity="false">
  60.     <appender-ref ref="inbound" />   
  61.   </category>       
  62.                
  63.   <category name="com.masociete.soft.sms.outbound" additivity="false">
  64.     <appender-ref ref="outbound" />   
  65.   </category>
  66.  
  67.   <category name="com.masociete.sms" additivity="false">
  68.     <appender-ref ref="sms_api" />
  69.   </category>
  70.        
  71.   <category name="com.masociete.framework" additivity="false">
  72.     <priority value="warn" />
  73.     <appender-ref ref="main" />
  74.   </category>
  75.        
  76.   <root>
  77.     <priority value ="debug" />
  78.     <appender-ref ref="main" />
  79.   </root>
  80. </log4j:configuration>


 
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
 


---------------
Just because you feel good does not make you right
Reply

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 :


<?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="com.maboite.monappli">
         <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>  

 
 
ç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 ?

Reply

Marsh Posté le 23-04-2003 à 08:39:08    

bin tu as une config de log4j par virtual machine [:spamafote]
 
donc si tu fait un DOMConfigurator dans une de tes servlets bin c'est ce fichier là qui est utilisé quoi [:spamafote]
 
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 :sarcastic:
 
<category name="com.masociete.soft.sms.persistence" additivity="false">
  <appender-ref ref="persistence" />
</category>
       


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 23-04-2003 à 08:39:08   

Reply

Marsh Posté le 23-04-2003 à 09:07:25    

Merde, c'est vrai que tu me l'avais dit. J'suis vraiment désolé. :jap:  
Merci.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed