gpt4 book ai didi

java - 在运行时删除日志文件,slf4j+logback不会再次创建它

转载 作者:行者123 更新时间:2023-11-30 04:25:47 25 4
gpt4 key购买 nike

我使用 SLF4J + Logback 作为应用程序中的日志基础设施。logback.xml 在我的应用程序中包含以下内容:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="5 seconds">
<jmxConfigurator />
<property name="DIR" value="${LOG_DATA_HOME}"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${DIR}/loghome/last.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${DIR}/loghome/log-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%-5level %date- %X{_diagKey} - %logger - %msg %n </pattern>
</encoder>
</appender>
<logger name="net.sf.ehcache" additivity="false">
<level value="error" />
<appender-ref ref="FILE" />
</logger>
<root level="error">
<appender-ref ref="FILE" />
</root>
</configuration>

我的应用程序在 linux suse 和 JRE 1.6 中运行。

我的问题是:当我的应用程序运行时,我按时间间隔从文件系统中删除了所有日志文件(包含最后一个文件)(出于多种原因,例如物理内存的限制等),但我的应用程序不创建日志文件当我重新启动我的应用程序时再次。

有人知道上述行为的原因及其解决方案吗?

已编辑我通过 logbak 的 OnConsoleStatusListener 获得更多详细信息:

11:00:33,640 |-ERROR in c.q.l.c.recovery.ResilientFileOutputStream@17459938 - IO failure while writing to file [\loghome\last.log] java.io.IOException: The handle is invalid
at java.io.IOException: The handle is invalid
at at java.io.FileOutputStream.writeBytes(Native Method)
at at java.io.FileOutputStream.write(FileOutputStream.java:260)
at at ch.qos.logback.core.recovery.ResilientOutputStreamBase.write(ResilientOutputStreamBase.java:52)
at at java.io.OutputStream.write(OutputStream.java:58)
at at ch.qos.logback.core.encoder.LayoutWrappingEncoder.doEncode(LayoutWrappingEncoder.java:103)
at at ch.qos.logback.core.OutputStreamAppender.writeOut(OutputStreamAppender.java:193)
at at ch.qos.logback.core.FileAppender.writeOut(FileAppender.java:220)
at at ch.qos.logback.core.OutputStreamAppender.subAppend(OutputStreamAppender.java:217)
at at ch.qos.logback.core.OutputStreamAppender.append(OutputStreamAppender.java:108)
at at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:88)
at at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:64)
at at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:285)
at at ch.qos.logback.classic.Logger.callAppenders(Logger.java:272)
at at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:473)
at at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:427)
at at ch.qos.logback.classic.Logger.debug(Logger.java:534)
at at Test.main(Test.java:17)

最佳答案

<configuration debug="true">是你的 friend 。另请参阅relevant documentation .

关于java - 在运行时删除日志文件,slf4j+logback不会再次创建它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15898753/

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