无法在我的Web应用程序中创建log4j日志文件

时间:2012-07-02 20:50:22

标签: java eclipse java-ee logging log4j

我使用log4j作为我的日志库,我希望生成的日志文件在我的Web应用程序中,所以以下是我正在使用的jar:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.4</version>
    </dependency>


    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.4</version>
    </dependency>

以下是log4j配置:

log4j.rootLogger=DEBUG, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=mylog.log

log4j.appender.R.MaxFileSize=10000KB

log4j.appender.R.MaxBackupIndex=3

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

# Control/Limit integrated frameworks logging messages
log4j.logger.org.springframework=ERROR

问题:当我使用log4j.appender.R.File=${user.home}/mylog.log之类的文件系统路径时 文件创建成功没有问题,但在尝试使用相对路径时:log4j.appender.R.File=mylog.log不会创建文件。

请告知如何解决这个问题。

2 个答案:

答案 0 :(得分:3)

由于您提到了一个Web应用程序,因此当前工作目录将是Web容器root-like TOMCAT_HOME。因此,日志文件路径将相对于您的Web容器而不是您的Web应用程序。

大多数Web容器也限制将文件写入Web应用程序目录。可能有一些配置要做 - 不确定。

答案 1 :(得分:1)

检查当前工作目录的权限。确保执行Java进程的用户具有读写访问权限。

要确定工作目录,请从Web应用程序上下文中的类(例如ServletServletContextListener)运行此目录:

System.out.println("Working Directory = " + System.getProperty("user.dir"));