我配置好了log4j配置文件,文件信息如下: 
print.verbose=true 
print.timing=true 
print.info=true 
print.important=true 
print.warning=true 
print.error=true 
print.fatal=true log4j.rootLogger=INFO,stdout 
log4j.logger.error=DEBUG,error 
log4j.logger.info=DEBUG,info 
log4j.logger.test=DEBUG,test log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%-5r [%t][%d{yyyy/MM/dd HH:mm:ss SSS}]-[%5p]%x- [%m]%n log4j.appender.error=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.error.File=${workdir}/Llogs/Lerror.log 
log4j.appender.error.DatePattern='.'yyyy-MM-dd 
log4j.appender.error.layout=org.apache.log4j.PatternLayout 
log4j.appender.error.layout.ConversionPattern=%-5r [%t][%d{ISO8601}]-[%5p]%x-[%l]-[%m]%n log4j.appender.info=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.info.File=${workdir}/Llogs/Linfo.log 
log4j.appender.info.DatePattern='.'yyyy-MM-dd 
log4j.appender.info.layout=org.apache.log4j.PatternLayout 
log4j.appender.info.layout.ConversionPattern=%-5r [%t][%d{ISO8601}]-[%5p]%x-[%l]-[%m]%n log4j.appender.test=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.test.File=${workdir}/Llogs/Ltest.log 
log4j.appender.test.DatePattern='.'yyyy-MM-dd 
log4j.appender.test.layout=org.apache.log4j.PatternLayout 
log4j.appender.test.layout.ConversionPattern=%-5r [%t][%d{ISO8601}]-[%5p]%x-[%l]-[%m]%n 
我在程序打日志的方法: 
public class LOGER{ 
static { 
PropertyConfigurator.configure(System.getProperty("workpath")+ "/log4j.properties"); 
} public static void DEBUG(Object message, String mod) { 
Logger log = Logger.getLogger(mod); 
log.debug(message); 

} 当我在程序里调用打印日志(LOGER.DEBUG("nihao","info"))的时候,在控制台能看到打印的信息,但是文件仍然还是0kb,如果我此时把tomcat重启,或者把工程重新部署一下,那么文件里面日志就出来,马上文件就变成3k或者1k.我用的是struts2 请高手明示,我这个问题是我程序有问题,还是配置有问题呢?谢谢今天我有用java logging api试了试,还是出现了同样的问题,我感觉是不是有什么流没关闭造成的?请问各位要如何处理,谢谢
private static Logger loger = null; static {
try {
if (loger == null) {
loger = Logger.getAnonymousLogger();
loger.addHandler(new FileHandler(System.getProperty("workdir")
+ "/Llogs/test.log", true));
}
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
testlog();
} public static void testlog() {
if (loger != null)
loger.log(Level.INFO, "测试");
else
System.err.println("eeeeeeeeeeee");
}

解决方案 »

  1.   

    对于log4j的应用不是很多,只接触过几次,而且我用的也只是用来打印一些hibernate的语句,所以我只能看看后面还有没有人来帮你回答了
      

  2.   

    现在正在郁闷中......上网看了一些文章,有的说是由于struts是动态调用,不能使用静态变量造成的...我也不知道其实质原因是什么.请知道的朋友回答,谢谢.不过我现在用其他方式解决日志问题,我继承了javaloggingAPI的Handler类,因为当有日志进行输出的时候会调用publish方法,自己在publish方法里,写生成文件...唉
      

  3.   

    哈哈,写出来是这样的:
    日期:[2010-9-10 8:35:32]&&类名:[com.test.JJLLAA]&&方法名:[printf]
    日志级别:[INFO]&&日志信息:[test]
    java.lang.NullPointerException: 123
    at com.test.JJLLAA.main(JJLLAA.java:26)系统的是:
    2010-9-10 8:35:32 com.test.JJLLAA printf
    信息: test
    java.lang.NullPointerException: 123
    at com.test.JJLLAA.main(JJLLAA.java:26)