我有一堆来自 Glassfish 应用程序服务器的部分压缩的旋转日志文件(使用自定义 Java 日志记录格式):
/tmp/server.log /tmp/server.log.13.gz /tmp/server.log.18.gz /tmp/server.log.23.gz /tmp/server.log.28.gz /tmp/server.log.32.gz /tmp/server.log.37.gz /tmp/server.log.4.gz /tmp/server.log.9.gz
/tmp/server.log.1 /tmp/server.log.14.gz /tmp/server.log.19.gz /tmp/server.log.24.gz /tmp/server.log.29.gz /tmp/server.log.33.gz /tmp/server.log.38.gz /tmp/server.log.5.gz
/tmp/server.log.10.gz /tmp/server.log.15.gz /tmp/server.log.20.gz /tmp/server.log.25.gz /tmp/server.log.2.gz /tmp/server.log.34.gz /tmp/server.log.39.gz /tmp/server.log.6.gz
/tmp/server.log.11.gz /tmp/server.log.16.gz /tmp/server.log.21.gz /tmp/server.log.26.gz /tmp/server.log.30.gz /tmp/server.log.35.gz /tmp/server.log.3.gz /tmp/server.log.7.gz
/tmp/server.log.12.gz /tmp/server.log.17.gz /tmp/server.log.22.gz /tmp/server.log.27.gz /tmp/server.log.31.gz /tmp/server.log.36.gz /tmp/server.log.40.gz /tmp/server.log.8.gz
我如何才能将它们合并为一个文件并按正确的顺序一起查看?看到了一些使用awstats
和的方法goaccess
,但第一个是 apache 特有的,最后一个似乎没有按预期工作。
有没有办法可以做到这一点而不必提取所有内容?
答案1
我使用 GoAccess 以自定义日志格式(Apache)解析所有压缩文件。
zcat -f /tmp/server.log* | goaccess -a
你可以解析几乎所有的日志日期/格式。请参阅手册页。
答案2
用这个:
cd /var/log/...
ls | tac | while IFS= read i; do if [[ $i == *.gz ]]; then gzip -d; else cat; fi < "$i"; done | less
警告.1
:当日志文件包含多位数字后缀(如、.2
、 ... )时,无法正确排序.10
。有人知道吗?