我有Tomcat日志中的日志文件,我想写一个脚本来合并过去7天的日志文件。日志文件名catalina.2015-04-23.log、catalina.2015-06-05.log、catalina.2015-06-04.log。
catalina.2015-04-23.log
catalina.2015-06-05.log
catalina.2015-06-04.log
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;
lhcgjxsq2#
为了避免使用显式日期,我假设文件最后一次修改是在它们记录的日期,允许使用find和一行代码:
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选项的时间范围的更多信息可在此处找到
.
-name
catalina
-mtime -6
-mtime +0
cat
this_weeks_logs.log
-mtime
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天前到现在的传递日期范围进行筛选。
s4
catalina.log
3条答案
按热度按时间nhn9ugyo1#
这将生成1周的合并日志文件
lhcgjxsq2#
为了避免使用显式日期,我假设文件最后一次修改是在它们记录的日期,允许使用
find
和一行代码:解释:
在本地文件夹
.
中查找包含-name
片段catalina
的所有文件。以最多6*24小时前的-mtime -6
和最少0小时前的-mtime +0
(间隔为7天)交替的文件为例,从这一天的开始开始计算小时数(即今天00:00:00)--以确保我们从昨天开始到一周前开始。然后命令cat
将文件编码为this_weeks_logs.log
有关
-mtime
选项的时间范围的更多信息可在此处找到hyrbngr73#
Super Speedy Syslog Searcher可以将多个日志文件合并到一个日志文件中,按日期时间对日志消息进行排序,并按日期时间范围进行筛选。
(假设您有rust installed)
然后
让
s4
解析所有catalina.log
文件。它将按7天前到现在的传递日期范围进行筛选。