Log4j - 无法写入自己的日志文件

时间:2011-04-14 04:16:08

标签: log4j

Spring 3.0网络应用。已将以下Log4j属性文件放在WAR文件的/ WEB-INF / classes目录中....

log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.A1.File=C:\\Testing.log  

有一个表单控制器,它通过记录器从表单中记录项目......

@Controller 
@RequestMapping("/FlowPartOne")
public class FlowPartOneFormController {

    private final Logger logger = Logger.getLogger(this.getClass());

    @RequestMapping(method=RequestMethod.POST)
    public String processForm(@ModelAttribute("pageOneData") PageOneData pageOneData) {
        logger.info("Page One, Line One>" + pageOneData.getDataLineOne() + "<");
        logger.info("Page One, Line Two>" + pageOneData.getDataLineTwo() + "<");
        return "FlowPartOne";
    }

} 

该应用程序在Glassfish 3下运行。

当应用程序运行时,会显示日志输出,但是在glassfish日志目录中... \ glassfish \ domains \ logs \ server.log。

我在C:驱动器上创建了日志文件,但它没有被使用。

我对Log4J有点新鲜,我做错了什么???

1 个答案:

答案 0 :(得分:1)

如果Glassfish使用log4j本身,如果在应用程序启动之前将由其类加载器加载运行,指向应用程序服务器日志文件,那么您的配置文件根本不会被加载。

您可以尝试在/ WEB-INF / lib中包含log4j.jar,以便在应用程序的类加载器中加载自己的私有副本,这应该选择您的配置,因为在app server类加载中本地类加载器优先于parent(app server)。

但它可能取决于应用服务器的类加载,我已经在JBoss上工作,其中需要额外的步骤,如激活类加载器隔离。

相关问题