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

Log4j和Logback FileAppender maxFileSize和maxBackupIndex

葛承嗣
2023-03-14

我需要控制日志框架的最大磁盘空间量。
例如,在log4j中,如果有如下所示的追加器,我可以很容易地估计需要多少磁盘空间:

<appender name="appender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="example.log"/>
    <param name="MaxFileSize" value="100KB"/>
    <param name="MaxBackupIndex" value="10"/>
    <layout class="org.apache.log4j.PatternLayout"> 
        <param name="ConversionPattern" value="%p %t %c - %m%n"/> 
    </layout> 
</appender>

对于maxFileSize和maxBackupIndex,我知道最多需要10x100KB。
我注意到DailyRollingFileAppender,但它不支持maxFileSize。

除了RollingFileAppender之外,是否还有其他fileappender可以实现此控制?logback或log4j2是否提供了其他文件附加器/备选项?

注意:我正在寻找仅配置日志框架的方法,而不是使用rm命令配置crontab这样的外部进程。欢迎第三方文件添加器,如这样,这样或这样。

共有1个答案

湛光华
2023-03-14

logback或log4j2是否提供其他文件附加器/备选项

log4j2引入了randomaccessfileappenderrollingrandomaccessfileappender,它们仍然是实验性的,可能会在将来的版本中取代fileappenderrollingfileappender。看这里。

但是,当前的RollingFileAppender需要TriggeringPolicy:

>

  • OnStartup触发策略:OnStartup策略不接受任何参数,如果日志文件早于当前JVM的启动时间,则会导致滚动。

    基于大小的触发策略:一旦文件达到指定大小,就会导致滚动。大小可以以字节、KB、MB或GB为单位指定。

    基于时间的触发策略:一旦日期/时间模式不再应用于活动文件,就会导致滚动。此策略接受一个“increment”属性,该属性指示基于时间模式的翻转发生的频率和一个“modulate”布尔属性。

  •  类似资料:
    • 问题内容: 我有一个使用log4j SyslogAppender(facility = USER)的Java应用程序,我可以在端口514上使用tcpdump看到我的应用程序正在将预期的日志消息作为数据报发送,并且netstat告诉我syslogd(红色帽子)正在运行并且正在监听0.0 .0.0:514,但我看不到/ var / log / messages中发生任何日志记录。 在我的syslog.

    • 问题内容: 我正在尝试从此处编译代码:http : //www.brackeen.com/javagamebook/#download(第6章),但遇到了麻烦。我不了解如何与log4j一起工作,但这似乎是问题所在。我得到的错误全部在或方法调用上。 这是NetBeans的输出: 这是本书的直接代码。我还没有尝试编辑它。 问题答案: 在您的类中导入java.util.logging.Logger似乎会

    • 我使用log4j RollingFileAppender根据文件大小滚动日志文件。我们设置的最大文件大小是"10 MB"。它在tomcat 6中运行良好,但是当我们迁移到TomEE Plus时...日志文件滚动不会发生...文件大小继续增长。 log4j配置如下:

    • 问题内容: 我有一个正在使用log4j2编写的新应用程序,以利用其一些新功能。它使用的其中一个库较旧,是使用log4j 1.x构建的。我在应用程序中的新代码写入日志时遇到问题,但旧库中的代码未写入日志。我什至有一个类,它是旧库中某些东西的子类,并且也被旧库中的代码调用,并且此代码也不会写入日志。我已将应用程序配置为使用log4j2版本2.0.2,并且在将旧库作为maven依赖项引用时,我明确排除了

    • 在Groovy脚本中到处搜索log4j日志记录到文件的工作示例。 没有显式类(它只是一个脚本)。没有圣杯。不到控制台。。。到文件。 只是一个带有log4j的普通groovy脚本。 log4j是最适合这一点的(groovy)还是其他日志库更好? 有人能给我举个例子或演示一下这是如何做到的吗?我设法把它送到控制台,但没有归档。 如果log4j配置也在config.groovy文件中,那就太好了,因为我

    • 我想使用Log4j登录AppEngine。我像这样配置了记录器: 但是记录器然后将所有内容记录到INFO,并且实际的日志级别只是按如下方式显示:(日志级别错误) 有没有一种方法可以让真实的日志级别与log4j一起工作,以便对日志级别进行过滤可以在appEngine UI上工作? 编辑:更详细的示例: 所以我记录了这样一个错误: 在Appenger-UI上,它显示为INFO(绿色I)。只有登录文本指