首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

java项目用log4j写日志,但无法写进log文件,帮忙看一下吧!该怎么解决

2012-03-09 
java项目用log4j写日志,但无法写进log文件,帮忙看一下吧!网上有关java的Log4j写日志大多是web开发,但是我

java项目用log4j写日志,但无法写进log文件,帮忙看一下吧!
网上有关java的Log4j写日志大多是web开发,但是我要在一个纯java工程(非web)中写日志。我在网上看到一个例子:
http://blog.csdn.net/tower888/article/details/6452699

我试着用了一下,发现只能在Console写日志,在log4j.properties中配置了很久也没成功在指定的文件中写日志。
我希望在指定位置创建一个log文件,把日志写进去,但就是实现不了。请各位帮我找找原因,谢谢!

这是我的代码,我写了三个java文件,一个log4j.properties,引入了两个jar包:log4j和apache.org.common.logging

1、Log4jConfig类:是用于配置log4j.properties的位置的。

Java code
package testLog;import org.apache.log4j.PropertyConfigurator;public class Log4jConfig {      private static boolean isReload = true;     public static void load() {          String path = Log4jConfig.class.getClass().getResource("/")                  .getPath()                  + "testLog/log4j.properties";          //String path="config/log4j.properties";           System.out.println("log4j configfile path=" + path);          PropertyConfigurator.configureAndWatch(path,1000);        }        private static void reload() {          if (isReload) {              load();          }          isReload = false;      }        public void setReload(boolean flag) {          isReload = flag;      }    }


2、Logger类,用于写日志的。
Java code
package testLog;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class Logger {      private Log log = null;      static{          Log4jConfig.load();//装载log4j配置文件       }      private Logger() {          log = LogFactory.getLog(this.getClass());      }        private Logger(Class c) {          log = LogFactory.getLog(c);      }        private Logger(String className) {          log = LogFactory.getLog(className);      }        public static Logger getLogger() {          return new Logger();      }        public static Logger getLogger(Class c) {                    return new Logger(c);      }        public static Logger getLogger(String className) {          return new Logger(className);      }        public void trace(String info) {          if (log.isTraceEnabled())              log.trace(info);      }        public void debug(String info) {          if (log.isDebugEnabled())              log.debug(info);      }        public void info(String info) {          if (log.isInfoEnabled())              log.info(info);              }        public void warn(String info) {          if (log.isWarnEnabled())              log.warn(info);      }        public void error(String info) {          if (log.isErrorEnabled())              log.error(info);      }        public void fatal(String info) {          if (log.isFatalEnabled())              log.fatal(info);      }        public boolean isTraceEnabled() {          return log.isTraceEnabled();      }        public boolean isDebugEnabled() {          return log.isDebugEnabled();      }        public boolean isInfoEnabled() {          return log.isInfoEnabled();      }        public boolean isWarnEnabled() {          return log.isWarnEnabled();      }        public boolean isErrorEnabled() {          return log.isErrorEnabled();      }        public boolean isFatalEnabled() {          return log.isFatalEnabled();      }  } 


3、log4j.properties,用于配置的,是我用添加普通文件的方式创建的。
其实不用写这么多,但是用了这么多配置语句都不起作用啊!
Java code
 
log_home=../log 
log4j.rootLogger=file,Console 

log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=C:\gwlog.log
log4j.appender.logfile.DatePattern=.yyyy-MM-dd
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n


### direct messages to file hibernate.log ###
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=D:\\log.txt
log4j.appender.file.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.appender.Console=org.apache.log4j.ConsoleAppender 
log4j.appender.Console.layout=org.apache.log4j.PatternLayout 
log4j.appender.Console.layout.ConversionPattern= [%d{yyyyMMdd-HH:mm:ss}-%p][%F:%L] %m%n 

log4j.appender.DailyFile=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.DailyFile.Threshold = info 
#log4j.appender.DailyFile.File=${log_home}/test.log
log4j.appender.DailyFile.File=C:\\gwlog.log
log4j.appender.DailyFile.encoding=gbk 
log4j.appender.DailyFile.Append=true 
log4j.appender.DailyFile.layout=org.apache.log4j.PatternLayout 
log4j.appender.DailyFile.layout.ConversionPattern=[%d{yyyyMMdd-HH:mm:ss}-%p][%F:%L] %m%n

log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=C:\gwlog.log
log4j.appender.logfile.DatePattern=.yyyy-MM-dd
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n



4、TestLog,测试类。
Java code
package testLog;public class TestLog {    static Logger log=Logger.getLogger(TestLog.class);          public static void main(String[] args) {          for (int i = 0; i < 5; i++) {              log.info("----------info");              log.debug("----------debug");              log.error("----------error");                          System.out.println("***********************");              try {                  Thread.sleep(2000);              } catch (InterruptedException e) {                  // TODO Auto-generated catch block                   e.printStackTrace();              }          }        }  }


请各位告诉我,我到底哪里错了,或者给我一个可以写日志在指定log文件中的java工程的实例,网址也可以。谢谢了!

[解决办法]
应该是在默认包下建立log4j.properties文件,不要尝试把这个文件放到其他地方,那样是可以,但是使用的时候及其不便,..........

[解决办法]
DailyRollingFileAppender
当天的日志xx没有.log后缀,第二天才能看到第一天的xx.log文件

热点排行