为什么我尝试使用log4j写入文件时获取此FileNotFoundException?

时间:2015-03-04 15:53:22

标签: java java-ee logging log4j filenotfoundexception

我使用 log4j 绝对是新的,我有以下问题。

我正在尝试将日志记录行打印到名为 log.out 的文件中。

所以我创建了以下 log4j.properties 配置文件:

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

问题在于,当我执行我的应用程序时以及它在日志记录操作中发生时,如下所示:

logger.debug("INTO main()");

我在控制台中获得以下异常(与 log.out 文件相关的错误消息访问被拒绝(在意大利语Accesso negato中):

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: \log.out (Accesso negato)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at java.io.FileOutputStream.<init>(Unknown Source)
        at org.apache.log4j.FileAppender.setFile(FileAppender.java:289)
        at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:163)
        at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:2
56)
        at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.j
ava:132)
        at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.j
ava:96)
        at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigura
tor.java:654)

并且不要在我的 log.out 文件(我手动创建)中写入任何内容。此 log.out 文件与代表我的应用程序的执行jar文件处于同一级别。

为什么呢?我错过了什么?我该如何解决这个问题?

TNX

2 个答案:

答案 0 :(得分:4)

我认为$ log是空的,它正在尝试在root上创建一个文件,并且您正在以普通用户身份运行程序。 给它一张支票。

答案 1 :(得分:3)

对于日志记录,我使用属性文件,我使用以下配置来解决同样的问题。当我使用 tomcat服务器时,我使用${catalina.base}来获取tomcat基目录。 log4j.appender.FILE.File=${catalina.base}/logs/debug.log

对于xml配置,syntex可能类似于以下

<param name="file" value="${catalina.base}/logs/debug.log"/>

如果您使用Tomcat作为应用程序服务器,我希望它能够正常运行。