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

log4j2滚动文件名

胡修伟
2023-03-14

有办法得到滚动文件名吗?我写了自定义插件,信号文件滚动,但我需要得到滚动文件的文件名。我的插件从java代码发出信号:

自定义插件:

@Plugin(name = "RTriggerPolicy", category = "Core", printObject = true)
public class RTriggerPolicy implements TriggeringPolicy {
    //...
    @Override
    public boolean isTriggeringEvent(LogEvent event) {
        if (event instanceof RLogEvent)
            return true;
        return false;
    }
    //...
}
<RollingFile name="appFile" fileName="${dir}app.log" append="true" filePattern="${dir}${roll}app-%d{yyyyMMddHHmmssSSS}.log">
    <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
    <PatternLayout pattern="${pattern}" />
    <Policies>
        <RTriggerPolicy name="app"/>
    </Policies>
</RollingFile>

共有1个答案

郑博厚
2023-03-14

获取滚动文件名的唯一方法是扩展DefaultRolloverStrategy并重写rollover方法。然后将其实现为:

@Override
public RolloverDescription rollover(final RollingFileManager manager) throws SecurityException {
    RolloverDescription rolloverDescription = super.rollover(manager);
    if (rolloverDescription.getSynchronous instanceof FileRenameAction) {
        File file = ((FileRenameAction) rolloverDescription.getSynchronous()).getDestination();
        // Do something useful here.
    }
}
 类似资料:
  • 我使用log4j2并试图日志与对数旋转。具体来说,我想以10MB的最大大小登录,并无限制地旋转。下面的配置生成3代滚动文件,因为“DefaultRolloverStrategy max”设置为3。你能指导我如何在最大10MB的大小下记录无限数量的文件吗?

  • 据我所知,log4j2中的RollingFileAppender不会在指定的时间(比方说-在一小时结束时)回滚,而是在超过时间阈值后到达的第一个日志事件时回滚。 有没有一种方法可以触发一个事件,一方面会导致文件滚动,另一方面不会附加到日志中(或者会附加一些无关紧要的东西,比如空字符串)?

  • 我正在编写一个将以编程方式创建log4j2配置的程序。我在log4j2.xml文件中有一个默认配置。基于列表中的某些数据类型,我必须为每种类型创建/复制log4j配置。配置是为这些类型复制的dailyrolling appender。创建记录器配置,根据数据类型将日志消息写入不同的文件。但每天的滚动并没有发生。 下面是基于数据类型生成log4j配置的代码。如果我需要更改为基于尺寸的滚动,也可以帮助

  • 我们最近已经将log4j2-beta9迁移到log4j2-2.0版本。我们正面临滚动文件的问题。 第一个问题:滚动文件没有压缩,只保留了. log文件。 第二个问题:活动文件没有被清除。日志不断被添加到同一个文件中,从而增加了文件大小。 请找到我的log4j2。xml:

  • 我在webapp中使用以下log4j RollingFile appender。 使用时,当日志滚动时,旧文件将重命名为具有索引号的文件名(使用%i指定),因此所有旧文件都应重命名并保留。 我通过以下代码以编程方式滚动日志。 但是,在7次滚动之后,现有文件将被删除(未根据指定的重命名),并在新文件中继续日志。 这里有什么问题?

  • 我有一个使用log4j1的应用程序。我在log4j.properties中的配置工作正常,它为日志创建文件。 我迁移到log4j2,现在没有创建文件,尽管我遵循了文档。我在这里尝试了所有不同的解决方案,但我无法实现。 这是我的应用程序中的log4j2.xml内部资源 这是我pom.xml的依赖 我厌倦了用完整路径更改文件的路径,在权限问题时更改文件夹。 我没有任何错误,但是当应用程序运行时,我看不