0

我正在使用 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文件未创建。

请告知如何解决。

4

2 回答 2

3

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

此外,大多数 Web 容器限制将文件写入 Web 应用程序目录。可能有一些配置可以做到这一点 - 不确定。

于 2012-07-02T21:10:50.610 回答
1

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

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

System.out.println("Working Directory = " + System.getProperty("user.dir"));
于 2012-07-02T21:03:42.033 回答