2012-10-07 127 views
2

我想使用log4j在我的Tomcat webapp上进行一些日志记录。我有一个数据访问类,应该记录下活动。用户的信息被请求等。 我已经添加了文件处理程序和consolehandler到我的rootlogger,我完全能够在控制台中看到正确的日志消息,但不幸的是没有在指定的文件中。Log4j不会登录到文件,只能登录到控制台

我的代码如下:

imports... 

public class UserDao { 
    private final Logger logger = Logger.getRootLogger(); 

    public UserDao() { 
     FileAppender fa = new FileAppender(); 
     fa.setLayout(new PatternLayout("%d{yyyy-MM-dd HH:mm:ss.SSSS} %p %t %c \u2013 %m%n")); 
     fa.setName("UserDaoFileAppender"); 
     fa.setFile("UserDao.log"); 
     fa.setThreshold(Level.INFO); 
     fa.setAppend(true); 
     fa.activateOptions(); 
     logger.addAppender(fa); 

     ConsoleAppender ca = new ConsoleAppender(); 
     ca.setLayout(new PatternLayout("%d{yyyy-MM-dd HH:mm:ss.SSSS} %p %t %c \u2013 %m%n")); 
     ca.setThreshold(Level.WARN); 
     ca.activateOptions(); 
     logger.addAppender(ca); 

     logger.warn("Test warning"); 
     logger.error("Test error"); 
     logger.info("Test info"); 
     logger.debug("test debug"); 
    } 

    // Rest of the class. 

} 

我已经使用设立的appender配置的属性文件的方式尝试过,但我从来没有能够得到它的工作。正如一些人在这里提出的,我尝试将它们放在WEB-INF/classes文件夹和src-root中。

回答

0

您正在使用FileAppender的无参数构造函数。请使用带有至少2个参数的构造函数。

FileAppender fa = new FileAppender(); 
fa.setLayout(new PatternLayout("%d{yyyy-MM-dd HH:mm:ss.SSSS} %p %t %c \u2013 %m%n")); 

下面替换这两条线:

FileAppender fa = new FileAppender(new PatternLayout("%d{yyyy-MM-dd HH:mm:ss.SSSS} %p %t %c \u2013 %m%n"), "path of the log file"); 
+0

我不明白为什么应该有所作为。编辑:它不。 – ssnielsen

0

我有工作样本(如果你是罚款属性文件)。您需要将log4j.properties复制到WEB-INF文件夹中

log4j.rootLogger=INFO, stdout, logfile 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n 

log4j.appender.logfile=org.apache.log4j.RollingFileAppender 
log4j.appender.logfile.File=${billing.root}/WEB-INF/billing.log 
log4j.appender.logfile.MaxFileSize=512KB 
# Keep three backup files. 
log4j.appender.logfile.MaxBackupIndex=3 
# Pattern to output: date priority [category] - message 
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n