日志官网
https://httpd.apache.org/docs/2.4/en/programs/rotatelogs.html
这是一款给予管道的日志,可以定时翻滚和定量翻滚,每次翻滚可以认为是切换到另一个文件.
语法
rotatelogs [ -l ] [ -L linkname ] [ -p program ] [ -f ] [ -D ] [ -t ] [ -v ] [ -e ] [ -c ] [ -n number-of-files ] logfile rotationtime|filesize(B|K|M|G) [ offset ]
参数,除了-t(追加改覆盖,在名字相同的情况下) 一般不用,最后一个偏移量也不使用,具体查看官网,常用格式 10为间隔时间单位为秒,或者使用10M 为文件大小,意思是多久翻滚一次
sh generate.sh | /usr/sbin/rotatelogs bb%S.log 10
案例
generate.sh内容
# !/bin/bash
while true
do
echo "Hello World!"
done
定时翻滚,每10秒翻滚一次,(标准错误重定向)
sh generate.sh 2>&1 | /usr/sbin/rotatelogs bb%S.log 10
生成的文件是,一分钟的话能生成6个,达到6个会,会因为文件名重复,继续在第一个 追加,
如果希望不是追加则,增加-t参数,是追加变成覆盖,
sh generate.sh 2>&1 | /usr/sbin/rotatelogs -t bb%S.log 10
使用这个可以实现日志已周为单位,然后定期覆盖,只保留一周的日志 86400为24小时
sh generate.sh 2>&1 | /usr/sbin/rotatelogs -t bb%a.log 86400
另一种用法,10M翻滚一次
sh generate.sh 2>&1 | /usr/sbin/rotatelogs bb%a.log 10M
文件名格式化
%A | full weekday name (localized) |
%a | 3-character weekday name (localized) |
%B | full month name (localized) |
%b | 3-character month name (localized) |
%c | date and time (localized) |
%d | 2-digit day of month |
%H | 2-digit hour (24 hour clock) |
%I | 2-digit hour (12 hour clock) |
%j | 3-digit day of year |
%M | 2-digit minute |
%m | 2-digit month |
%p | am/pm of 12 hour clock (localized) |
%S | 2-digit second |
%U | 2-digit week of year (Sunday first day of week) |
%W | 2-digit week of year (Monday first day of week) |
%w | 1-digit weekday (Sunday first day of week) |
%X | time (localized) |
%x | date (localized) |
%Y | 4-digit year |
%y | 2-digit year |
%Z | time zone name |
%% | literal `%' |