2010-10-01 68 views
1

现在我使用log4j以其普通的vanilla/out-of-the-box形式。我在类路径中有一个log4j.properties文件,并且在Web应用程序中散布各种记录器消息。现在我对重定向包“xyz”中方法“abc”的日志消息以转到特定的日志文件“pqr”感兴趣。我不希望包xyz中的所有记录器消息都转到“pqr”,而只是从包中的那一个方法(“abc”)。将log4j消息从一种方法重定向到另一个日志文件

我该如何做到这一点?

TIA博

回答

2

这是我使用的配置文件。这将发送一些特定的消息到文件和其他人到控制台。这可能对你有一点帮助。 这用于独立的应用程序。

<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

我不认为它可以是颗粒状。为什么不把这个方法拉到一个单独的类?

+0

好主意。但是这正是我想要做的,我在属性文件中创建了一个记录器,并在该方法中使用该记录器(基本上在类级别声明两个记录器对象),并且来自此方法的所有消息都被重定向到这个新的&单独的记录器。这样的事情: – BoCode 2010-10-01 04:00:37

+0

哎呀按下意外进入。 – BoCode 2010-10-01 04:01:14

+0

private static Logger logger = Logger.getLogger(Main.class); private static Logger logger2 = Logger.getLogger(“AUDITLOG”); /** * @参数ARG游戏命令行参数 */ 公共静态无效的主要(字串[] args){// TODO代码应用程序逻辑这里 logger.info( “试验”); logger2.info(“SDSDS”); System.out.println(“ding dong”); – BoCode 2010-10-01 04:01:52