Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java log4j:错误setFile(null,false)调用失败_Java_Maven_Log4j_Log4net - Fatal编程技术网

Java log4j:错误setFile(null,false)调用失败

Java log4j:错误setFile(null,false)调用失败,java,maven,log4j,log4net,Java,Maven,Log4j,Log4net,我面临一些奇怪的错误,如下所示 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.ap

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

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(不完整)


src/main/environment/dev/config.properties
当我直接使用
时,其工作正常,但当我使用
时,我会遇到上述异常

我非常确定属性文件中的值可以读取,因为我的一个java文件只能读取此属性文件中的值。。那么为什么这个log4j.xml文件不能读取

请告诉我哪里出错了?

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

您在此处使用反斜杠:

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

因此,您的路径应该类似于:
logging.folder=D:/logs/

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

C:/myfile.log                     // access denied...
但当我创建了一个对我的用户ID有权限的文件夹时,它工作正常:

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

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

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

对于xml配置,syntex可能如下所示

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


如果您正在使用Tomcat,那么希望它能起作用。

这个问题与slashes人员无关。 此错误行:

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

正在告诉我们它正试图在根目录(\表示根目录)中创建debug.log文件 很明显,它将无法访问,因此访问被拒绝

在我的例子中,我通过在启动服务器之前添加VM参数来解决这个问题。就这样

示例:(在我的示例中,我使用的是
Wildfly
,请更改服务器位置的路径)
-dloging.folder=C:\Program Files\wildfly-14.0.1.Final\standalone\log

在解释XML属性之前,似乎没有读取
config.properties
。我还注意到,您的路径不匹配,并且您没有指定出现错误的环境(是否是未启用
dev
的配置?)。@chrylis配置文件“dev”默认启用。。你能告诉我我的问题的解决方案吗?当我直接使用时,它对我来说工作正常..用户3128668-你找到上面的答案了吗?
<param name="file" value="${catalina.base}/debug.log"/>