2012-10-31 113 views
7

我開發了一個Web應用程序,我可以註冊一個員工。如何在web.xml和log4j.properties中配置log4j輸出文件路徑?

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 

    <display-name>Employee Registration</display-name> 

    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
    <servlet-name>sapient</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>sapient</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 

</web-app> 

現在,當我點擊我的html頁面一Register按鈕。它去,我已經寫了日誌記錄的代碼的控制器類,

@org.springframework.stereotype.Controller 
public class RegController { 
    private static final Logger LOGGER = Logger 
      .getLogger(RegController.class.getName()); 


@RequestMapping(value = "/register.htm", method = RequestMethod.GET) 
public ModelAndView handleRequest(HttpServletRequest request, 
     HttpServletResponse response) throws Exception { 
    LOGGER.debug("ENTERING the contoller class"); 
    ModelAndView mav = new ModelAndView("register"); 
    LOGGER.debug("exiting the contoller class"); 
    return mav; 

} 

}

我創建了一個名爲resource包,並在

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=C:\\loging.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=1 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 

創建log4j.properties文件但我的日誌不是在C:驅動器中創建的。

我需要在web.xml中配置一些東西嗎? 我已經包含log4j.jar文件。

+0

請參閱此鏈接http://www.mkyong。com/spring-mvc/spring-mvc-log4j-integration-example/ – Swarne27

回答

2

你的問題與Spring MVC無關。這只是一個Log4J配置問題。 (請編輯您的問題)

您是否正確設置了記錄器? (例如允許調試水平,你的file附加器設置記錄器)

有這樣的事情在你的配置(我只是回顧記憶語法,自己解決它,如果有什麼錯)

log4j.rootLogger.level=INFO, file 
log4j.logger.your.package.RegController=DEBUG 

類似的東西。

另外,請確保在classpath中沒有其他log4j.properties或log4j.xml。 Log4J可能會加載它們而不是你的,這會導致問題。

+0

題外話:我強烈建議OP採用SLF4J。您仍然可以使用Log4J作爲後端進行日誌記錄,但它可以簡化配置,並且您可以在將來 –

7

您需要包括 -

<context-param> 
     <param-name>log4jConfigLocation</param-name> 
     <param-value>/WEB-INF/resource/log4j.properties</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
    </listener> 

在web.xml。那麼它會正常工作。

+0

和/ WEB-INF/resource /下使用此代碼添加文件log4j.properties '#Root記錄器選項 log4j.rootLogger = DEBUG,文件 #重定向日誌消息到日誌文件 log4j.appender.file = org.apache.log4j.RollingFileAppender進行 #outputs到Tomcat家 log4j.appender.file.File = $ {的catalina.home} /logs/myapp.log log4j.appender.file.MaxFileSize = 5MB log4j.appender.file.MaxBackupIndex = 10 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j的。 appender.file.layout.ConversionPattern =%d {yyyy-MM-dd HH:mm:ss}%-5p%c {1}:%L - %m%n' –

+0

工程就像一個魅力。謝謝 –

1

在資源文件夾中包含以下log4j.properties文件。

log4j.rootCategory=INFO,S,rollingFile 

log4j.appender.S =org.apache.log4j.ConsoleAppender 
log4j.appender.S.layout =org.apache.log4j.PatternLayout 
log4j.appender.S.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n 

log4j.appender.rollingFile = org.apache.log4j.DailyRollingFileAppender 

#provide path to your location where you want logs created. For now its logs folder of tomcat. 
log4j.appender.rollingFile.File = ${catalina.home}/logs/loging.log 
log4j.appender.rollingFile.Append = true 
log4j.appender.rollingFile.MaxFileSize=2000KB 
log4j.appender.rollingFile.MaxBackupIndex=9 

log4j.appender.rollingFile.Threshold = ALL 

log4j.appender.rollingFile.DatePattern = '.'yyy-MM-dd 
log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout 
log4j.appender.rollingFile.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n 

用這個替換你的代碼。肯定會工作得很好。

0
在web.xml

添加以下代碼

<context-param> 
     <param-name>log4jConfigLocation</param-name> 
     <param-value>/WEB-INF/resource/log4j.properties</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
    </listener> 

和/ WEB-INF /資源下/這段代碼

# Root logger option 
    log4j.rootLogger=DEBUG, file # Redirect log messages to a log file 
    log4j.appender.file=org.apache.log4j.RollingFileAppender #outputs to 
    Tomcat home log4j.appender.file.File=${catalina.home}/logs/myapp.log 
    log4j.appender.file.MaxFileSize=5MB 
    log4j.appender.file.MaxBackupIndex=10 
    log4j.appender.file.layout=org.apache.log4j.PatternLayout 
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} 
    %-5p %c{1}:%L - %m%n 

,並在你的類中添加添加文件log4j.properties這個代碼

private static final Logger logger = Logger.getLogger(NameOfYourrClass.class); 

和自己的函數中添加此代碼

logger.debug("This is Error message", new Exception("Testing")); 
相關問題