当前位置: 首页 > 知识库问答 >
问题:

日志返回创建重复的日志文件填满硬盘驱动器

黄鸣
2023-03-14

我支持使用logback生成日志文件的解决方案。问题是生成的日志文件创建得太快,以至于它们填满了硬盘驱动器,导致系统崩溃。

当分析创建的日志文件时,我们可以看到它们的大小为5MB,当它们翻转到下一个日志文件时,下一个日志文件是与上一个日志文件相同的数据,只添加了15-20条跟踪线,然后它将以相同的格式创建下一个日志文件,并以快速的速度继续。有人见过使用logback的这种行为吗?问题在于EsuiteStore*日志:

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <contextName>SSCStoreServer</contextName>
    <jmxConfigurator/>
    <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <level value="INFO" />
        <file>${esStoreLogFilePath}/esuiteStore.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${esStoreLogFilePath}/esuiteStore-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <MaxHistory>4</MaxHistory>
            <MinIndex>1</MinIndex>
            <MaxIndex>4</MaxIndex>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %date %level [%thread] %logger{10}:%L %msg%n
            </Pattern>
        </layout>
        <filter class="com.ncr.ssc.cf.common.util.LoggerNameFilter">
            <LoggerName>org.hibernate</LoggerName>
            <OnMismatch>NEUTRAL</OnMismatch>
            <OnMatch>DENY</OnMatch>
        </filter>
    </appender>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <level value="INFO" />
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %date %level [%thread] %logger{10}:%L %msg%n
            </Pattern>
        </layout>
        <filter class="com.ncr.ssc.cf.common.util.LoggerNameFilter">
            <LoggerName>org.hibernate</LoggerName>
            <OnMismatch>NEUTRAL</OnMismatch>
            <OnMatch>DENY</OnMatch>
        </filter>
    </appender>
    <appender name="METRICS"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <level value="INFO" />
        <file>${esStoreLogFilePath}/personalizationMetrics.csv</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <FileNamePattern>personalizationMetrics%i.csv</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>2</MaxIndex>
        </rollingPolicy>
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>5MB</MaxFileSize>
        </triggeringPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %msg%n
            </Pattern>
        </layout>
        <filter class="com.ncr.ssc.ss.personalizationcontroller.LoggerMetricsFilter">
            <LoggerName>Metrics</LoggerName>
            <OnMismatch>DENY</OnMismatch>
            <OnMatch>ACCEPT</OnMatch>
        </filter>
    </appender>
    <root>
        <level value="INFO" />
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
        <appender-ref ref="METRICS" />
    </root>
</configuration>

共有1个答案

司空高义
2023-03-14

问题是有多个进程在运行,试图访问日志文件,所以一旦它试图翻转,就开始创建多个具有相同数据的日志文件。进程列表显示了运行的多个Java实例。

 类似资料:
  • 问题内容: 我当前正在创建一个可以包含模块的系统(将它们视为插件),其中每个模块可以拥有自己的专用日志。 我想使用log4j2项目进行日志记录,但是文件附加器似乎有些麻烦。 主项目(整个模块的模块加载器和“核心”)应具有自己的日志文件,而模块应具有自己的日志文件(如)。 通过阅读有关追加程序的文档,我发现了该类,并且我将使用它。直到我发现不能简单地将追加器添加到由创建的默认记录器中。 LogMan

  • 我目前正在创建一个系统,可以有模块(把它们看作插件),其中每一个都可以有自己的日志,专用的。 我想使用log4j2项目进行日志记录,但我似乎在文件附加符方面遇到了一些麻烦。 主项目(模块加载器和整个事情的“核心”)应该有自己的日志文件,而模块应该有自己的日志文件(像)。 即使搜索也没有给我提供任何接近的解决方案,我找到的只是xml配置中预定义的文件日志--这不是我想要的。 感谢你的阅读;即使是最轻

  • 我在SpringBoot中使用logback,但无法删除旧的日志文件。 我在logback-spring.xml文件中定义了以下appender: 即使我设置了“MaxHistory”和“CleanHistoryonStart”,超过10天的日志文件也不会被删除。既不是翻转也不是启动。

  • 问题内容: 我正在尝试配置log4j以将消息记录到文件中。现在,确实使用我提供的名称创建了该文件,但是日志未写入该文件。我的代码: 我文件的内容: 运行此命令时,将在控制台中获得以下输出: 该文件确实在我的主目录中创建。但是它是空的。 有什么想法我做错了吗?我正在使用log4j 1.2.17版。 问题答案: 输出似乎是Java标准日志记录框架(JUL)发出的默认格式。 因此,有两种可能性(想到):

  • 我好像拿不到滚动日志文件。 我的logback.xml配置有以下内容: 有意思。SIFT中“unknown.log”文件中的条目在分钟的停止处停止。之后,不会向SIFT文件写入任何内容,但我一直在catalina.out中获取条目:

  • DailyRollingFileAppender没有创建每日备份日志文件。 我正在使用下面的配置,它在我的本地机器上工作,但在部署项目的机器上不工作。 框架——SpringMVC 我无法理解配置的哪个部分正在阻塞DailRollingFileAppender,以便在我的服务器上创建日期日志。 编辑- 我根据建议更新了我的文件,但在第二天上午12点,它不会创建新的备份文件。意味着它更新了AppLog