Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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 错误:";setFile(null,false)调用失败“;使用log4j时_Java_File_Logging_Log4j - Fatal编程技术网

Java 错误:";setFile(null,false)调用失败“;使用log4j时

Java 错误:";setFile(null,false)调用失败“;使用log4j时,java,file,logging,log4j,Java,File,Logging,Log4j,我已经在项目的源文件夹中添加了log4j.properties文件,但仍然得到一个log4j:error 这是我的Log4j.properties文件: .rootCategory=DEBUG, R, O # Stdout log4j.appender.O=org.apache.log4j.ConsoleAppender log4j.appender.O=log44j.log # File log4j.appender.R=org.apache.l

我已经在项目的源文件夹中添加了
log4j.properties
文件,但仍然得到一个log4j:error

这是我的Log4j.properties文件:

    .rootCategory=DEBUG, R, O
    # Stdout
    log4j.appender.O=org.apache.log4j.ConsoleAppender
    log4j.appender.O=log44j.log
    # File
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=log4j.log

    # Control the maximum log file size
    log4j.appender.R.MaxFileSize=100KB

    # Archive log files (one backup file here)
    log4j.appender.R.MaxBackupIndex=1

    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.O.layout=org.apache.log4j.PatternLayout

    log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
    log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n

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

    # Define the file appender
    log4j.appender.FILE=org.apache.log4j.FileAppender
    log4j.appender.FILE.File=logs/${file.name}
    log4j.appender.FILE.Append=false

    # Define the layout for file appender
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.conversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
下面是我得到的Java异常:

log4j:ERROR setFile(null,false) call failed.
java.io.FileNotFoundException: logs (Access is denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:116)
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
    at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
    at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
    at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:809)
    at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:735)
    at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:615)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:502)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:547)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:483)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
    at org.apache.log4j.Logger.getLogger(Logger.java:104)
    at lib.Dashboard.Reports.<init>(Reports.java:34)
    at testcases.AmazonDashboard.TC_DB17.main(TC_DB17.java:54)
AmazonDashboardTC_DB17Exception in thread "main" java.lang.NullPointerException
    at testcases.AmazonDashboard.TC_DB17.main(TC_DB17.java:131)
log4j:错误setFile(null,false)调用失败。
java.io.FileNotFoundException:日志(访问被拒绝)
在java.io.FileOutputStream.open(本机方法)
位于java.io.FileOutputStream。(FileOutputStream.java:194)
位于java.io.FileOutputStream。(FileOutputStream.java:116)
位于org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
位于org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
位于org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
位于org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
位于org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
位于org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:809)
位于org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:735)
位于org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:615)
位于org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:502)
位于org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:547)
在org.apache.log4j.helpers.OptionConverter.selectAndConfigure上(OptionConverter.java:483)
登录org.apache.log4j.LogManager(LogManager.java:127)
位于org.apache.log4j.Logger.getLogger(Logger.java:104)
在lib.Dashboard.Reports.(Reports.java:34)
在testcases.AmazonDashboard.TC_DB17.main(TC_DB17.java:54)
线程“main”java.lang.NullPointerException中的AmazonDashboardTC_DB17异常
在testcases.AmazonDashboard.TC_DB17.main(TC_DB17.java:131)中
请告诉我如何解决此异常,因为我已尝试将属性文件放置在根文件夹中,现在已将其放置在源文件夹中,但在这两种情况下,我都遇到了上述异常。

查看错误- 'log4j:错误setFile(null,false)调用失败。 java.io.FileNotFoundException:日志(访问被拒绝)'


似乎有一个名为“logs”的日志文件被拒绝访问,即它没有足够的权限写入日志。尝试授予“日志”日志文件的写入权限。希望有帮助。

我也有同样的问题。以下是对我有效的解决方案:只需将属性文件路径按如下方式放在cmd行中:

-Dlog4j.configuration=<FILE_PATH>  (ex: log4j.properties)
-Dlog4j.configuration=(例如:log4j.properties)

希望这对您有所帮助

我怀疑变量
${file.name}
没有正确替换。因此,
log4j.appender.FILE.FILE
的值变为
logs/
。同样地,Java尝试创建一个名为
logs/
的日志文件,但它可能是一个现有目录,因此您会遇到异常

作为一种快速补救措施,将
log4j.appender.FILE.FILE
设置更改为按绝对路径指向文件,例如
/tmp/mytest.log
。你不应该得到一个例外


之后,您可以继续调试运行时环境中未正确替换
${file.name}
的原因。

请将日志文件位置更改为其他驱动器。它会起作用的

这是创建日志文件的权限。

如果是window7(如我的),没有管理权限,则无法在C:drive上写入文件

只需在log4j.properties文件中提供另一个文件夹

设置文件名


log4j.appender.FILE.FILE=C:\server\log.out您可以使用记事本+++

尝试使用sudo(超级用户)执行您的命令,这对我有效:)
运行:$sudo your_命令

然后输入超级用户密码。仅此而已。

出现此错误是因为当前用户无法访问您提供的附件文件位置


快速解决方案,将log4j.appender.FILE.FILE设置更改为使用您登录的当前用户可访问的位置的绝对路径指向文件,例如/tmp/myapp.log。现在,您不应该出现错误。

我只是向“日志”文件夹添加了写入权限,它对我有效


为了防止此isue,我将log4j.properties文件中目录${kafka.logs.dir}中的所有值更改为我自己的目录。例如D:/temp/…

这是您的配置:

log4j.appender.FILE.File=logs/${file.name}
这个错误发生了:

java.io.FileNotFoundException: logs (Access is denied)
因此,似乎没有设置变量
file.name
,java试图写入目录
logs


您可以使用此选项-D强制执行变量
${file.name}
的值调用maven:

mvn clean test -Dfile.name=logfile.log

log4j.appender.FILE.FILE=logs/${FILE.name}这不在最终文件中,对吗?那么,已部署的log4j.properties中的值是什么呢?在应用程序有多个日志文件的情况下,此值的可能重复肯定很有用,有时在共享系统上不能有这样的预编译