java - LOGBACK - 根据大小滚动文件,然后在一天结束时将所有文件一起滚动到压缩文件夹中
问题描述
我有一个要求,我必须根据以下要求滚动文件:
- 当文件达到 1 KB 的限制时滚动文件(仅将 1 KB 用于测试目的)。例如:log.1.txt、log.2.txt。一天可能有多个。
- 滚动当天创建的所有文件并压缩它们(以gz格式)。所以基本上log.1.txt、log.2.txt都会以logs.json.date.gz格式存储。
但在探索之后,我觉得这是不可能的,因为它可能需要 2 个触发策略。
下面是我的代码片段:
<appender name="jsonAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log/logs.json</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/logs.json.%d{yyyy-MM-dd-HH-mm}.gz</fileNamePattern>
<maxHistory>2</maxHistory>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>1KB</maxFileSize>
</triggeringPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
<jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
<prettyPrint>true</prettyPrint>
</jsonFormatter>
<timestampFormat>yyyy-MM-dd' 'HH:mm:ss.SSS</timestampFormat>
</layout>
</encoder>
</appender>
对于所有的logback专家,如果我的理解正确,请指导我。这种情况是否可能。
更新:这个问题与此处发布的其他问题不同。我想根据大小滚动文件的大小。然后在午夜将它们一起滚动到一个公共文件夹中,这将通过基于时间的滚动来完成。
所以我不想要 log19august.01.gz 和 log19august.02.gz。我希望 log.01 和 log.02 在 log19august.gz 下。
所以这不是一个重复的问题,因为它需要基于大小和时间的滚动,但在不同的情况下。
解决方案
推荐阅读
- prolog - 如何在没有剪切的情况下从列表中删除第一个匹配元素
- snowflake-cloud-data-platform - Snowflake - 创建名称中带有日期变量的表
- python - 应用程序在本地运行,在 PyPi 中使用 ModuleNotFound 失败
- c++ - 使用查询字符串的 Libcurl HTTP GET 请求
- java - 为 Kafka 使用创建 ProtoBuf 对象模式
- wpf - 如何使用变量中文本框中的用户输入值(Powershell)
- python - 有没有办法在 Windows 上更改 ttk.OptionMenu 中特定选项的颜色?
- javascript - 如何使用双键运算符检查对象是否具有真值或错误值?
- powerbi - 服装尺寸的dax计算
- http-headers - Azure 数据工厂中的 HTTP 请求