java - 使用 logback 仅存档旧日志

标签 java logging slf4j logback

是否可以仅将旧文件与日志一起归档?

例如,我需要将日志以文本形式存储14天,然后归档?

当前使用的附加器:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>../log/mylog.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>../log/mylog.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
      <maxFileSize>50MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    <maxHistory>50</maxHistory>
  </rollingPolicy>

  <encoder>
    <pattern>%d{yyyy.MM.dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
  </encoder>

</appender>

他在更改日志文件之后立即归档文件。

slf4j-1.7.2/logback-1.0.9

最佳答案

滚动日志文件是logback中归档日志文件的别名,因此滚动意味着归档。

I need to store logs as text 14 days, and then archive

然后不要对滚动策略设置最大文件限制。但是,我认为没有必要将其作为文本。据我所知,logback将日志归档为.gz格式。你可以使用一堆命令直接查看这些.gz格式的日志。例如zcat、zgrep,可以直接使用less来查看gz格式的日志。

你可以编写一个简单的shell程序将14天的日志从目录移动到另一个地方(这才是真正的归档)。该 shell 只需要通过设置 cron 作业每天运行一次。

关于java - 使用 logback 仅存档旧日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14869251/

相关文章:

java - 我从github上拉取了slf4的源码,但是在IDEA中无法运行

maven-2 - SLF4J:类路径包含多个 SLF4J 绑定(bind)

scala - sbt 在 fork 模式下将信息消息显示为错误

java - "new"表达式中的花括号? (例如 "new MyClass() { ... }")

java - 中缀到后缀

python - Shell 命令 - 延迟标准输出日志,因为命令执行时路径不存在

c# - Serilog topshelf 集成不起作用

java - 方法 getItemCount 中出现空指针异常

java - 线程安全单例类

Python 日志记录模块在 "add-on"属性上引发 KeyError 异常