我使用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
不会创建文件。
请告知如何解决这个问题。
答案 0 :(得分:3)
由于您提到了一个Web应用程序,因此当前工作目录将是Web容器root-like TOMCAT_HOME。因此,日志文件路径将相对于您的Web容器而不是您的Web应用程序。
大多数Web容器也限制将文件写入Web应用程序目录。可能有一些配置要做 - 不确定。
答案 1 :(得分:1)
检查当前工作目录的权限。确保执行Java进程的用户具有读写访问权限。
要确定工作目录,请从Web应用程序上下文中的类(例如Servlet
或ServletContextListener
)运行此目录:
System.out.println("Working Directory = " + System.getProperty("user.dir"));