Logback RollingFileAppender FileNotFoundException(回滚FileAppender FileNotFoundException异常)
问题描述
我正在我的spring-boot
项目中使用logback
。当我们在PROD
环境中部署应用时,部署失败,出现以下异常。在PROD之前,我们在较低的环境中部署了该应用程序,我们没有看到任何问题。有没有人能给我点光?
在logback.xml
中,我们将日志路径指定为/app/tomcatprofile/micro001/logs/sc-erp-security-permissions-check.log
,但在下面的日志中,将日志路径设置为/app/tomcatprofile/micro001/logs
。
还附上了logback.xml
。
15:54:22,305 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: /app/tomcatprofile/micro001/logs
15:54:22,305 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [/app/tomcatprofile/micro001/logs]
15:54:22,305 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - openFile(/app/tomcatprofile/micro001/logs,true) call failed. java.io.FileNotFoundException: /app/tomcatprofile/micro001/logs (Is a directory)
at java.io.FileNotFoundException: /app/tomcatprofile/micro001/logs (Is a directory)
at at java.io.FileOutputStream.open0(Native Method)
at at java.io.FileOutputStream.open(FileOutputStream.java:270)
at at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at at ch.qos.logback.core.recovery.ResilientFileOutputStream.<init>(ResilientFileOutputStream.java:26)
at at ch.qos.logback.core.FileAppender.openFile(FileAppender.java:204)
at at ch.qos.logback.core.FileAppender.start(FileAppender.java:127)
at at ch.qos.logback.core.rolling.RollingFileAppender.start(RollingFileAppender.java:100)
at at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:90)
at at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:309)
at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:193)
at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:179)
at at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:165)
at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152)
at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110)
at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)
at at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
at at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)
at at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)
at at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
at at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
at at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
at at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
at at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132)
at at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:273)
at at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86)
at at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
at at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5151)
at at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:917)
at at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1701)
at at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at at java.lang.Thread.run(Thread.java:745)
Logback.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="FILE_PATH" value="${catalina.base}/logs/sc-erp-security-permissions-check.log" />
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d [%t] %-5p %c - %X{TransactionId} - %m%n</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>TRACE</level>
</filter>
</appender>
<appender name="mainAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${FILE_PATH}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${FILE_PATH}.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<append>true</append>
<encoder>
<Pattern>%d [%t] %-5p %c - %X{TransactionId} - %m%n</Pattern>
</encoder>
</appender>
<logger name="com.adp.smartconnect" additivity="false">
<level value="DEBUG" />
<appender-ref ref="mainAppender" />
<appender-ref ref="consoleAppender" />
</logger>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springframework.boot" level="WARN"/>
<logger name="org.springframework.jmx" level="WARN"/>
<logger name="com.adp.smartconnect.commons" level="WARN" />
<logger name="springfox" level="WARN"/>
<logger name="org.springframework.ws.client.MessageTracing.sent" level="INFO"/>
<logger name="org.springframework.ws.client.MessageTracing.received" level="INFO"/>
<logger name="org.springframework.ws.server.MessageTracing" level="INFO"/>
<root>
<level value="INFO" />
<appender-ref ref="mainAppender" />
<appender-ref ref="consoleAppender" />
</root>
</configuration>
推荐答案
我们的登录配置在内部使用SpringBoot登录实现,在我从logback.xml中删除以下行后,问题得到解决。
<include resource="org/springframework/boot/logging/logback/base.xml"/>
注意:我们的Spring-Boot版本是1.5.10
疑难解答:
- 我们仍然不知道它为什么会被剥离 来自完整日志文件路径的"sc-erp-Security-Permises-check.log"。
- 使用base.xml,在dev、Qa和Stage中部署成功,但仅在Prod中4个节点中的2个失败。
我仍在进行研究,以找出确切的根本原因,如果我找到什么,将更新此答案。
感谢@Andreas的及时响应。
这篇关于回滚FileAppender FileNotFoundException异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:回滚FileAppender FileNotFoundException异常
基础教程推荐
- 如何对 HashSet 进行排序? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01