为什么在尝试使用 log4j 写入文件时会出现此 FileNotFoundException?
Why I obtain this FileNotFoundException when I try to use log4j to write into a file?
我完全是使用 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
我认为 $log 是空的,它正在尝试在 root 上创建一个文件,而您是 运行 作为普通用户的程序。
检查一下。
在配置后使用属性文件进行日志记录应该可以。对于tomcat应用服务器,请使用${catalina.base}
获取tomcat基目录。
log4j.appender.FILE.File=${catalina.base}/logs/debug.log
对于 XML 配置,语法可能如下所示
<param name="file" value="${catalina.base}/logs/debug.log"/>
如果您使用 Tomcat 作为您的应用程序服务器,我希望它能正常工作。
我完全是使用 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
我认为 $log 是空的,它正在尝试在 root 上创建一个文件,而您是 运行 作为普通用户的程序。 检查一下。
在配置后使用属性文件进行日志记录应该可以。对于tomcat应用服务器,请使用${catalina.base}
获取tomcat基目录。
log4j.appender.FILE.File=${catalina.base}/logs/debug.log
对于 XML 配置,语法可能如下所示
<param name="file" value="${catalina.base}/logs/debug.log"/>
如果您使用 Tomcat 作为您的应用程序服务器,我希望它能正常工作。