log4j:ERROR setFile(null,true) call failed

1、错误描述

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: 
	at java.io.FileOutputStream.open(Native Method)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:142)
	at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
	at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
	at org.apache.log4j.DailyRollingFileAppender.activateOptions(DailyRollingFileAppender.java:223)
	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:842)
	at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
	at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)

	at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
	at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
	at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
	at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
	at org.apache.log4j.Logger.getLogger(Logger.java:104)
	at freemarker.log.Log4JLoggerFactory.getLogger(Log4JLoggerFactory.java:65)
	at freemarker.log.Logger.getLogger(Logger.java:284)
	at freemarker.template.utility.SecurityUtilities.<clinit>(SecurityUtilities.java:67)

	at freemarker.ext.beans.BeansWrapper.<clinit>(BeansWrapper.java:147)
	at freemarker.template.ObjectWrapper.<clinit>(ObjectWrapper.java:69)

	at freemarker.core.Configurable.<init>(Configurable.java:139)
	at freemarker.template.Configuration.<init>(Configuration.java:142)
	at freemarker.template.Configuration.<clinit>(Configuration.java:127)
	at org.apache.struts2.views.freemarker.FreemarkerManager.createConfiguration(FreemarkerManager.java:331)
	at org.apache.struts2.views.freemarker.FreemarkerManager.init(FreemarkerManager.java:282)
	at org.apache.struts2.views.freemarker.FreemarkerManager.getConfiguration(FreemarkerManager.java:269)
	at org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler.init(DefaultDispatcherErrorHandler.java:47)
	at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:488)
	at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.init(StrutsPrepareFilter.java:56)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4830)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5510)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1245)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1895)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
log4j:ERROR Either File or DatePattern options are not set for appender [ServiceRollingFile].
log4j:ERROR Could not find value for key log4j.appender.stdout
log4j:ERROR Could not instantiate appender named "stdout".

2、错误原因


3、解决办法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: log4j:error setfile(null,true) 表示在使用log4j日志框架时,设置日志文件路径为null或者文件名为null,同时设置为追加模式(true),导致出现错误。这通常是由于配置文件中的错误或者代码中的错误导致的。需要检查配置文件和代码,确保日志文件路径和文件名正确,并且文件存在。 ### 回答2: log4j:error setfile(null, true)是什么意思呢? 在日志框架log4j中,setfile(null, true)是一个错误的配置,会导致日志无法正常输出。这个错误的原因在于setfile()方法所设置的文件不存在,或者因为权限问题无法访问。 当我们使用log4j配置日志时,通常使用properties、xml或者代码方式的配置,其中就包括需要设置日志输出的文件路径。使用setfile()方法就是为了设置日志输出的文件路径。 然而,如果在配置文件中没有正确配置这个文件路径,或者日志文件所在的路径受到了系统权限限制,就会导致log4j系统无法正常读取并输出日志,进而产生setfile(null, true)这个错误。 为了解决这个错误,我们需要检查log4j的配置文件,确保日志文件的路径正确设置,并且具有正确的读写权限。如果还是无法解决问题,则需要进一步查看相关日志和报错信息,以便找到问题的根源。 ### 回答3: 这个错误是由于log4j无法找到指定的文件而导致的。一般情况下,当我们使用log4j进行日志记录时,我们需要指定一个日志文件的路径,并设置参数为true来确保日志信息会追加到文件中而不是覆盖文件。 然而,如果指定的路径不存在或者没有写入权限,那么log4j就会抛出这个错误。这时我们需要检查下面几个方面: 1.检查路径是否正确。路径应该是一个有效的文件路径,而不是目录路径。 2.检查路径是否存在。如果路径不存在,那么log4j无法创建文件并写入日志。 3.检查文件是否被其他程序或进程占用。如果是,那么log4j将无法打开文件并写入日志。 解决上述问题之后,我们还可以尝试使用其他方式记录日志,例如使用控制台输出日志,或者使用其他日志库来记录日志。此外,我们还可以查看log4j的文档和社区,看看其他人如何解决这个错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值