2014-02-17 180 views
0

我正在嘗試使用我的Java Web Aaplication第一次使用ServletContext進行日誌記錄。我沒有收到任何日誌文件。有人能告訴我我沒有做什麼嗎?Log4j不寫日誌文件

我的ServletContextListener:

@Override 
    public void contextInitialized(ServletContextEvent sce) { 

     ServletContext context = sce.getServletContext(); 
     String prefix = context.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); 
     } 
    } 

我的web.xml中:

<listener> 
     <listener-class>com.kollega.listener.KollegaContextListener</listener-class> 
    </listener> 

Log4j.properties文件:

log4j.logger.kollegalogger=DEBUG, C, fileappender 
log4j.appender.fileappender=org.apache.log4j.RollingFileAppender 
log4j.appender.fileappender.File=/WEB-INF/logs/kollega.log 
log4j.appender.fileappender.MaxFileSize=500KB 

我測試的Servlet:

private final Logger log = Logger.getLogger("kollegalogger"); 
log.debug(">>> Connectition TO database Successful for Login"); 
     Logger.getLogger(LoginServlet.class.getName()).log(Level.FATAL, ">>>>Connectition TO database Successful for Login"); 

我只獲取DEBUG的輸出,但WEB-INF/logs/kollega.log中沒有日誌文件。我錯過了什麼?

編輯: * 我刪除$從文件路徑{} appRootPath和日誌是入門創建於C:/WEB-INF/logs/kollega.log。我需要它在我的WEB-INF目錄中 *

回答

1

試試看。在Web應用程序路徑工程相對於/WEB-INF而不是WEB-INF

String file = System.getProperty("file.separator")+"WEB-INF" + System.getProperty("file.separator") + "classes" + System.getProperty("file.separator") + "log4j.properties"; 
+0

我在WEB-INF文件夾中仍然沒有任何日誌文件。我正在使用Netbeans。 :( – ErrorNotFoundException

+0

查看我的編輯該文件正在創建C:/ WEB-INF ??? – ErrorNotFoundException

+0

/WEB-INF是您的Web應用程序中的上下文文件夾 –

0

將屬性在您的類文件或WEB-INF/classes,那麼你可以如下加載它容易在classpath文件:

PropertyConfigurator.configure("log4j.properties");**