Log4j配置用于多个日志记录设计问题

时间:2011-12-03 10:47:13

标签: spring web-applications log4j spring-aop

我必须在我们的Web应用程序中以下列方式实现log4j:

1)DEBUG级别日志不得附加在任何文件中。在开发应用程序时,这些日志应仅在开发工作站/ IDE的控制台上可用。 - 它现在正在发生但是在部署之后这些日志被附加在catalina.out中,我必须停止它。

2)INFO转发应用程序日志应该放在一个日志文件中 - 它现在正在发生。

3)使用Spring AOP对整个应用程序进行性能记录时,还应该进行另一个基于文件的日志记录 - 尚未实现。

log4j配置如下:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender" >
<param name="Threshold" value="DEBUG" />   
  <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value="%d %-5p  [%c{1}] %m %n" />
  </layout>
</appender>

<appender name="fileAppender" class="org.apache.log4j.DailyRollingFileAppender">
  <param name="Threshold" value="INFO" />
  <param name="File" value="${catalina.home}/logs/dashboard.log"/>
  <param name="DatePattern" value="'-'yyyy-MM-dd'.log'"/>
  <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value="[%d{ISO8601}] - %-5p- [%X{USER_ENCRYPT_ID}%x] - %C.%M(%F:%L) - %m %n" />
  </layout>
</appender>


<logger name="com.project14" additivity="false" >   
  <level value="DEBUG" />
  <appender-ref ref="consoleAppender" /> 
  <appender-ref ref="fileAppender"/>      
</logger>

</log4j:configuration>

我是log4j配置的新手,所以请验证并建议必要的实施以达到我的要求。

1 个答案:

答案 0 :(得分:1)

据我所知,您需要不同的appender将日志推送到不同的日志文件或类似的东西。

你在这里缺少一件事。请尝试使用过滤器。这是一个简单的示例,它使用过滤器将不同的日志发送到不同的文件。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
    <param name="Threshold" value="DEBUG" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p  [%c{1}] %m %n" />
    </layout>
</appender>

<appender name="fileAppenderInfo" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="Threshold" value="INFO" />
    <param name="File" value="d:/info.log" />
    <param name="DatePattern" value="'-'yyyy-MM-dd'.log'" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
            value="[%d{ISO8601}] - %-5p- [%X{USER_ENCRYPT_ID}%x] - %C.%M(%F:%L) - %m %n" />
    </layout>
     <filter class="org.apache.log4j.varia.LevelRangeFilter">
                    <param name="levelMin" value="INFO" />
                    <param name="levelMax" value="INFO" />
     </filter>
</appender>

<appender name="fileAppenderDebug" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="Threshold" value="DEBUG" />
    <param name="File" value="d:/debug.log" />
    <param name="DatePattern" value="'-'yyyy-MM-dd'.log'" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
            value="[%d{ISO8601}] - %-5p- [%X{USER_ENCRYPT_ID}%x] - %C.%M(%F:%L) - %m %n" />
    </layout>
     <filter class="org.apache.log4j.varia.LevelRangeFilter">
                    <param name="levelMin" value="DEBUG" />
                    <param name="levelMax" value="DEBUG" />
     </filter>
</appender>

<appender name="fileAppenderWarn" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="Threshold" value="WARN" />
    <param name="File" value="d:/warn.log" />
    <param name="DatePattern" value="'-'yyyy-MM-dd'.log'" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
            value="[%d{ISO8601}] - %-5p- [%X{USER_ENCRYPT_ID}%x] - %C.%M(%F:%L) - %m %n" />
    </layout>
     <filter class="org.apache.log4j.varia.LevelRangeFilter">
                    <param name="levelMin" value="WARN" />
                    <param name="levelMax" value="WARN" />
     </filter>
</appender>


<logger name="com.log4j.test" additivity="false">
    <level value="all"/>
    <appender-ref ref="fileAppenderWarn" />
    <appender-ref ref="fileAppenderDebug"/>
    <appender-ref ref="fileAppenderInfo"/>
</logger>
</log4j:configuration>

希望这会有所帮助。如果你遇到其他一些问题,请回复我。

相关问题