Nginx日志切割,我想分为两种,

一种从日志文件中将历史日志从日志文件切割下来(切割法),

另一个中是把新来的日志按规定格式写到新的日志文件中(分离法)。


切割法:(切割下来的日志文件中内容是历史日志)

编写logrotate配置文件 vi /etc/logrotate.d/nginx

/data/price/*log {

    daily

    rotate 10

    missingok

    notifempty

    compress

    sharedscripts

    postrotate

        /bin/kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid 2>/dev/null) 2>/dev/null || :

    endscript

}


检测配置

/usr/sbin/logrotate -f /etc/logrotate.d/nginx


分离法:(按规定时间格式,分离出来的日志)

nginx.conf文件中添加如下配置

if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})")

{

    set $year $1;

    set $month $2;

    set $day $3;

    set $hour $4;

    set $minutes $5;

    set $seconds $6;

}

access_log /data/logs/nginx/www.ttlsa.com-$year-$month-$day-access.log;#按天分离日志

access_log /data/logs/nginx/www.ttlsa.com-$year-$month-$day-$hour-minutes-access.log;#按分钟分离日志