2012-10-31 79 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")); 
相关问题