0

我开发了一个 spring mvc 应用程序,它在 tomcat 上完美执行,但是我从服务器 tomcat 获取的日志在控制台上,我希望将日志存储在一个文件中,换句话说,我希望 tomcat 日志和事件是在控制台上显示要存储在文件中,我已经尝试了 apache 的日志 4j,下面是我正在使用的属性文件...

    ### direct messages to file or.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=C:/logs/springmvc.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1} - %m%n
log4j.appender.file.append=true

### set log levels - for more verbose logging change 'info' to 'debug' ##
log4j.rootCategory=ALL, file
log4j.logger.Demo=\=debug
log4j.logger.org.eclipse=debug

和主类..我希望记录 log.info 语句..

public class HelloWorldController extends AbstractController{
    protected final Log logger = LogFactory.getLog(getClass());
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {
        logger.info("Returning hello view");
        ModelAndView model = new ModelAndView("HelloWorldPage");
        model.addObject("msg", "saral saxreva");

        return model;
    }
}

但仍然没有在单独的文件中生成日志,请告知我,因为我对此感到困惑。

4

2 回答 2

0

springmvc.log 文件是否在您的程序启动时创建?这是 log4j 是否被正确拾取的第一个迹象。

  • 确保 log4j 属性文件位于正确的位置并且被正确拾取
  • 仔细检查您的记录器和 LogFactory 类的导入语句(只是为了确保它们使用的是 log4j 类

如果 log4j 设置正确,您将看到应用程序启动时创建的 springmvc.log 文件。

然后在 log4j 属性中,尝试:

log4j.rootLogger=DEBUG,file

并摆脱您拥有的其他两个

log4j.logger.Demo=\=debug
log4j.logger.org.eclipse=debug
于 2012-07-09T14:47:36.100 回答
0

我认为要启用 Web 应用程序的登录,您需要一些初始化它的侦听器(或 servlet)。例如在 Spring 中,您需要在 web.xml 中定义这样的监听器:

<!-- This listener is necessary to enable log4j logging -->
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

在互联网上有很多关于此的信息。这是来自谷歌的第一个链接。这是另一个链接,其中描述了如何在没有 Spring 的情况下在 servlet 或侦听器中初始化记录器。

而且最好使用log4j.rootLogger而不是log4j.rootCategory因为 last 已被弃用。

于 2012-07-09T14:47:44.970 回答