2010-10-01 6 views
1

Pour le moment, j'utilise log4j dans son format standard vanilla/out-of-the-box. J'ai un fichier log4j.properties dans le chemin de la classe et divers messages d'enregistreur jonchés dans l'application Web. Maintenant, je suis intéressé par la redirection des messages du journal d'une méthode "abc" dans le paquet "xyz" pour aller à un fichier journal spécifique "pqr". Je ne veux pas que tous les messages de l'enregistreur du paquetage xyz vont à "pqr" mais juste à partir de cette méthode ("abc") dans le paquet.rediriger les messages log4j d'une méthode vers un fichier journal différent

Comment puis-je y parvenir?

TIA Bo

Répondre

2

Voici le fichier de configuration que j'utilise. Cela enverra des messages spécifiques à un fichier et d'autres à la console. Cela peut vous aider un peu. Ceci est utilisé dans une application autonome.

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> 
<!-- ============================== --> 
<!-- Append SQL messages to a file. --> 
<!-- ============================== --> 
<appender name="SQL" class="org.apache.log4j.RollingFileAppender"> 
    <param name="Threshold" value="TRACE" /> 
    <param name="File" value="sql-statement.log" /> 
    <param name="Append" value="true" /> 
    <param name="MaxFileSize" value="5000KB" /> 
    <param name="MaxBackupIndex" value="100" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%m%n" /> 
    </layout> 
</appender> 

<!-- ============================== --> 
<!-- Append messages to the console --> 
<!-- ============================== --> 
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out" /> 
    <param name="Threshold" value="DEBUG" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="[%p] %m%n" /> 
    </layout> 
</appender> 

<!-- =============================== --> 
<!-- Application specific categories --> 
<!-- =============================== --> 
<category name="com.edusoft.crashtest.qsbi"> 
    <priority value="DEBUG" /> 
    <appender-ref ref="CONSOLE" /> 
</category> 
<category name="com.edusoft.crashtest.qsbi.printer" additivity="true"> 
    <priority value="TRACE" /> 
    <appender-ref ref="SQL" /> 
</category> 

<!-- Setup the Root category --> 
<root> 
    <priority value="ERROR" /> 
</root> 

0

Je ne pense pas qu'il peut être que granulaire. Pourquoi ne pas sortir cette méthode dans une classe séparée?

+0

Bonne idée. Mais c'est ce que j'essaye de faire, j'ai créé un enregistreur de plus dans le fichier de propriétés et j'utilise ce logger dans la méthode (déclare deux objets logger au niveau de la classe) et tous les messages de cette méthode sont redirigés vers ce nouveau enregistreur séparé. Quelque chose comme ceci: – BoCode

+0

Oups pressé entrer accidentellement. – BoCode

+0

logger logger logger privé = Logger.getLogger (Main.class); private static Logger logger2 = Logger.getLogger ("AUDITLOG"); /** * @param args les arguments de ligne de commande */ public static void main (String [] args) {// TODO logiques d'application de code ici logger.info ("tests"); logger2.info ("SDSDS"); System.out.println ("ding dong"); – BoCode

Questions connexes