log4j:错误集文件(null,false) 调用失败



我面临一些奇怪的错误,如下所示

log4j:ERROR setFile(null,false) call failed.
java.io.FileNotFoundException: debug.log (Access is denied)
src/main/dev/

environment/dev/config.properties

logging.folder=D:/logs

log4j.xml

<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
      <param name="append" value="false"/>
      <param name="file" value="${logging.folder}/debug.log"/>
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      </layout>
   </appender>

Maven.xml(不完整)

<filters>
            <filter>src/main/environment/dev/config.properties</filter>
        </filters>

当我直接使用 <param name="file" value="D:/logs/debug.log"/> 时,它工作正常,但是当我使用 <param name="file" value="${logging.folder}/debug.log"/> 时我会得到上述异常。.

我很确定属性文件中的值能够读取,因为我的一个 java 文件只能从此属性文件中读取值......那么为什么这个 log4j.xml 文件不能读取呢?

请告诉我出了什么问题?

除了钱德拉的回答之外,我在Windows 7上的Eclipse中遇到了同样的异常:

C:/myfile.log                     // access denied...

但是当我创建一个具有用户ID权限的文件夹时,它工作正常:

 C:/myLogs/myfile.log             // it wasn't necessary to create the file

我还注意到必须使用正斜杠指定路径。

在定义此路径 ${logging.folder} 的地方使用正斜杠 ('/') 而不是反斜杠 ('\')。这就是我在那里看到的错误:

您在此处使用反斜杠:

java.io.FileNotFoundException: \debug.log (Access 被拒绝)

所以你的路径应该是这样的:logging.folder = D:/logs/

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

对于您的 xml 配置,语法可能如下所示

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

如果您使用的是Tomcat,那么希望它会起作用。

这个问题与斜杠人无关。此错误行:

java.io.FileNotFoundException: \debug.log (Access 被拒绝)

告诉我们它正在尝试在根中创建调试.log文件(\ 表示根)显然,它无法访问,因此访问被拒绝。

就我而言,我通过在启动服务器之前添加 VM 参数来解决此问题。就是这样。

示例:(在我的情况下,我使用的是Wildfly,更改服务器位置的路径)

"-Dlogging.folder=C:Program Fileswildfly-14.0.1.Finalstandalonelog"

相关内容

最新更新