gpt4 book ai didi

java - 错误 : "setFile(null,false) call failed" when using log4j

转载 作者:IT老高 更新时间:2023-10-28 21:15:19 24 4
gpt4 key购买 nike

我在项目的源文件夹中添加了 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)

请告诉我,如何解决此异常,因为我尝试将我的属性文件放在根文件夹中,现在我已放置在源文件夹中,但在这两种情况下我都遇到了上述异常。

最佳答案

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

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

之后,您可以继续调试为什么 ${file.name} 在您的运行时环境中没有被正确替换。

关于java - 错误 : "setFile(null,false) call failed" when using log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10682130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com