我支持使用logback生成日志文件的解决方案。问题是生成的日志文件创建得太快,以至于它们正在填满硬盘驱动器并导致系统崩溃。
在分析创建的日志文件时,我们可以看到它们的大小是5MB,当它们翻转时,下一个日志文件是与前一个日志文件相同的数据,只添加了15-20条跟踪线,然后它将创建下一个日志文件相同的格式并继续快速。有没有人见过这种使用logback的行为?问题出在esuiteStore * logs:
$ {esStoreLogFilePath} / esuiteStore-%d {YYYY-MM-DD}。%i.log
我们的其他客户没有看到这种情况,我们无法在测试环境中重新创建它(使用相同的SW和logback.xml)。在我的系统上,正确创建了日志文件(相同的日志记录不会复制到下一个翻转文件中)。我的理解是它应该创建5MB翻转日志文件,并节省四天的日志记录。
我不确定我使用的是什么版本的logback但是我在c:\ java目录中找到了以下内容。
logback-classic-0.9.26.jar文件中的Manifest.mf Build-Jdk:1.6.0_16
安装了Java(TM)6 Update 13 6.0.130。
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>
答案 0 :(得分:0)
问题是有多个进程正在尝试访问日志文件,因此一旦尝试翻转就开始创建具有相同数据的多个日志文件。进程列表显示了多个Java运行实例。