内容目录
使用命令
# 压缩8天前多个日志文件到一个压缩包
find . -name 'filename_prefix*' -mtime +8 | xargs tar -czvf log_archive.tgz
# 删除多个日志文件
find . -name 'filename_prefix*' -mtime +8 | xargs rm -f
find -mtime 说明:
- -mtime +n: 表示n天前
- -mtime -n:表示n天后
- -mtime n: 表示n天
使用场景说明
日志文件过大导致服务器磁盘占用过高或者占完。
通常我们的系统的日志文件都是按照日期和日志文件大小Rolling的,比如:你项目里面的logback.xml 配置为:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" scanPeriod="60 seconds" debug="false">
<property name="LOG_HOME" value="/app/applog/your_app"/>
<property name="appName" value="your_app"/>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%magenta(%d{yyyy-MM-dd HH:mm:ss.SSS}) %yellow([%thread]) %highlight(%-5level) %cyan(%logger{50}) - %green(%msg%n)
</pattern>
</layout>
</appender>
<appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i-json.log</fileNamePattern>
<MaxHistory>60</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
</providers>
<customFields>{"app": "${appName}" }</customFields>
</encoder>
</appender>
<logger name="com.your.domain" level="info"/>
<logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<springProfile name="prod,test">
<root level="info">
<appender-ref ref="stdout"/>
<appender-ref ref="appLogAppender"/>
</root>
</springProfile>
<springProfile name="dev">
<root level="info">
<appender-ref ref="stdout"/>
<appender-ref ref="appLogAppender"/>
</root>
</springProfile>
</configuration>
根据这个文件配置,如果一天的日志文件如果文件大小不超过100M则只有一个文件,如果日志文件超过100M就根据实际日志大小有两个或者多个文件。