2012-04-01 112 views
0

我想在我的jsp和servlets中使用log4j。我閱讀Apache文檔和this blog。我試圖作爲該博客的第二種方法。這裏是我的屬性文件未找到Log4j日誌文件

log4j.logger.myapplogger=DEBUG, C, fileappender 
  
log4j.additivity.myapplogger=true 
log4j.appender.C=org.apache.log4j.ConsoleAppender 
log4j.appender.C.layout=org.apache.log4j.PatternLayout 
#basic pattern 
log4j.appender.C.layout.ConversionPattern=[%c] [%d{dd MMM yyyy - hh:mm:ss}] %5p - %m %n 
#advanced pattern (slow) 
#log4j.appender.C.layout.ConversionPattern=[%c] [%d{dd MMM yyyy - hh:mm:ss}] %5p - %m - in %M() at line %L of class %C %n 
  
log4j.appender.fileappender=org.apache.log4j.RollingFileAppender 
log4j.appender.fileappender.File=${appRootPath}WEB-INF/logs/app_log.log 
log4j.appender.fileappender.MaxFileSize=500KB 
  
## Keep one backup file 
log4j.appender.fileappender.MaxBackupIndex=3 
log4j.appender.fileappender.layout=org.apache.log4j.PatternLayout 
log4j.appender.fileappender.layout.ConversionPattern=%p %t %c - %m%n 
#log4j.appender.C.layout.ConversionPattern=[%c] [%d{dd MMM yyyy - hh:mm:ss}] %5p - %m %n 

這裏是我的servlet監聽

public class ApplicationServletContextListener implements ServletContextListener{ 

    public void contextInitialized(ServletContextEvent e) { 

     ServletContext ctx=e.getServletContext(); 
     String prefix=ctx.getRealPath("/"); 
String file="WEB-INF"+System.getProperty("file.separator")+"classes"+System.getProperty("file.separator")+"log4j.properties"; 

if(file !=null){ 
PropertyConfigurator.configure(prefix+file); 
    System.out.println("Log4J Logging started for application: " + prefix+file); 
}else{ 
System.out.println("Log4J Is not configured for application Application: " + prefix+file); 
} 

和控制檯上顯示「Log4J日誌開始申請......」。

這裏是我嘗試測試的servlet。

private Logger log = Logger.getLogger("myapplogger"); 
log.error("this is a testign error"); 

控制檯顯示的log.But還有在WEB-INF /日誌創建/。請讓我知道我必須檢查以及如何糾正這種沒有任何日誌文件。

回答

1

其因

你必須在文件屬性爲append.It變量${appRootPath}尚未設置的話,其空。

由於它是空的,它最終會在您的主目錄中創建一個WEB-INF/logs目錄,而不是tomcat webapps/

定義在contextInitialized()屬性

System.setProperty("appRootPath", context.getRealPath("/")); 

重新啓動servlet容器。

+0

謝謝你Hardik.It工作。 – 2012-04-02 10:35:40

+0

你是來吧。 – 2012-04-02 10:36:39