【问题标题】:Can't create log4j log file inside my web application无法在我的 Web 应用程序中创建 log4j 日志文件
【发布时间】:2012-07-02 20:50:22
【问题描述】:

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

请告知如何解决。

【问题讨论】:

  • 应用程序可能没有权限写入运行它的目录。这通常是一件好事。

标签: java eclipse jakarta-ee logging log4j


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多