使用外壳脚本合并最近7天的日志文件

gv8xihay  于 2022-10-17  发布在  Unix
关注(0)|答案(3)|浏览(201)

我有Tomcat日志中的日志文件,我想写一个脚本来合并过去7天的日志文件。
日志文件名catalina.2015-04-23.logcatalina.2015-06-05.logcatalina.2015-06-04.log

nhn9ugyo

nhn9ugyo1#

这将生成1周的合并日志文件

for a in `seq 6 -1 0`;
do
    dt=`date "+%F" --date=" -"$a" days"`;
    f=$dt".log";
    cat $f >> "1_week.log";
done;
lhcgjxsq

lhcgjxsq2#

为了避免使用显式日期,我假设文件最后一次修改是在它们记录的日期,允许使用find和一行代码:

find . -name '*catalina*' -daystart -mtime -6 -mtime +0 -exec cat '{}' >> this_weeks_logs.log \;

解释:
在本地文件夹.中查找包含-name片段catalina的所有文件。以最多6*24小时前的-mtime -6和最少0小时前的-mtime +0(间隔为7天)交替的文件为例,从这一天的开始开始计算小时数(即今天00:00:00)--以确保我们从昨天开始到一周前开始。然后命令cat将文件编码为this_weeks_logs.log
有关-mtime选项的时间范围的更多信息可在此处找到

hyrbngr7

hyrbngr73#

Super Speedy Syslog Searcher可以将多个日志文件合并到一个日志文件中,按日期时间对日志消息进行排序,并按日期时间范围进行筛选。
(假设您有rust installed)

cargo install super_speedy_syslog_searcher

然后

s4 catalina*log -a $(date -d "7 days ago" '+%Y-%m-%d')

s4解析所有catalina.log文件。它将按7天前现在的传递日期范围进行筛选。

相关问题