我在项目中基于log4j做了个通用的日志组件,可以向写我自定义的应用日志(AppLog.java),是利用log4j的fatal等级实现的。 public void app(AppLog appLog){
getLogger().log(FQCN, Level.FATAL, appLog, null);
}
同时,其他的等级没有改变,依然可以用来写日志输出到文件。
采取的xml的配置方式。
以下是其中一个xml的配置文件<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" threshold="null" debug="null" reset="false">  <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %-5p (%F:%L): %m%n" /> 
    </layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
       <param name="levelMin" value="DEBUG" />
       <param name="levelMax" value="ERROR" />    
       <param name="AcceptOnMatch" value="true" />
    </filter>
  </appender> 
  
  <appender name="FILE" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="E:/EclipseWorkspace-shd_rap/***/logs/default.log" />
    <param name="MaxFileSize" value="5120KB" />
    <param name="MaxBackupIndex" value="10" />
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %-5p (%F:%L): %m%n" /> 
    </layout> 
<filter class="org.apache.log4j.varia.LevelRangeFilter">
       <param name="levelMin" value="DEBUG" />
       <param name="levelMax" value="ERROR" />    
       <param name="AcceptOnMatch" value="true" />
    </filter>
  </appender> 
  
  <appender name="DATABASE" class="cn.com.****.***.logging.DBAppender"> 
   <param name="bufferSize" value="1" /> 
<layout class="cn.com.***.***.logging.DBLayout" />
<filter class="org.apache.log4j.varia.LevelRangeFilter">
       <param name="levelMin" value="FATAL" />
       <param name="levelMax" value="FATAL" />    
       <param name="AcceptOnMatch" value="true" />
    </filter>
  </appender>   <root> 
    <level value="WARN" /> 
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="FILE" /> 
    <appender-ref ref="DATABASE" />
  </root>
</log4j:configuration>在eclipse里运行工程,输入日志都没问题
但是部署到服务器后,输出不了程序的行数,如下:
 $ more webApplication.log 
2009-08-13 19:51:34,313 [main] INFO  (?:?): web应用服务启动,加载web应用模块日志配置文件成功!
2009-08-13 19:51:34,316 [main] INFO  (?:?): 稽核配置初始化开始...
2009-08-13 19:51:34,382 [main] INFO  (ProxoolFacade.java:86): Proxool 0.9.0RC3 (10-Jan-2007 01:38)
2009-08-13 19:51:36,074 [main] INFO  (?:?): 稽核配置初始化完成...
2009-08-13 19:51:36,091 [Timer-0] INFO  (?:?): 资源管理模块数据自动加载线程运行,加载数据开始!
2009-08-13 19:51:38,110 [Timer-0] INFO  (?:?): 装载KPI信息成功,KPI条数 = 1560
2009-08-13 19:51:38,160 [Timer-0] INFO  (?:?): 装载Alarm信息成功,Alarm条数 = 226
2009-08-13 19:51:38,160 [Timer-0] INFO  (?:?): 资源管理模块初始化完成,初始化资源数 = 33
2009-08-13 19:51:38,168 [main] INFO  (TilesPlugin.java:236): Tiles definition factory loaded for module ''.
2009-08-13 19:51:38,172 [main] INFO  (ValidatorPlugIn.java:211): Loading validation rules file from '/WEB-INF/validator-rules.xml'
2009-08-13 19:51:38,173 [main] INFO  (ValidatorPlugIn.java:211): Loading validation rules file from '/WEB-INF/validation.xml'如红色部分显示的问题
问题比较难描述,希望对log4j有兴趣,有研究的达人共同探讨、学习下。