Nginx日志切割

 

方法1(脚本+定时执行):

#step1:加脚本 cut_nginx_log.sh,主进程把USR1信号发给worker,worker接到这个信号后,会重新打开日志文件

#!/bin/bash

logs_path="/usr/local/nginx-1.6.0/logs"

log_name="access.log"

pid_path="/usr/local/nginx-1.6.0/logs/nginx.pid"

mv ${logs_path}/${log_name} ${logs_path}/"access-"$(date --date="LAST DAY" "+%Y-%m-%d").log

kill -USR1 `cat ${pid_path}`

#find ${logs_path} -name "*.log" -mtime +30 -delete

#step2:crontab 定时跑脚本,每天0点0分执行脚本

crontab -e

0 0 * * * /usr/local/nginx-1.6.0/logs/cut_nginx_log.sh


方法2(使用logrotate):

vi /etc/logrotate.d/nginx

/usr/local/nginx/logs/www.willko.cn.log /usr/local/nginx/logs/nginx_error.log {

notifempty

daily

sharedscripts;

postrotate

/bin/kill -USR1 `/bin/cat /usr/local/nginx/nginx.pid`

endscript

}

多个日志以空格分开,

notifempty 如果日志为空则不做轮询

daily 每天执行一次

postrotate 日志轮询后执行的脚本

这样,每天都会自动轮询,生成nginx.log.1-n


方法3(conolog):没试过


方法4(修改配置文件):

在server{}里加上:

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

{

set $ng_year $1;

set $ng_month $2;

set $ng_day $3;

set $ng_hour $4;

set $ng_minutes $5;

set $ng_seconds $6;

}

access_log  logs/$ng_year-$ng_month-$ng_day-$ng_hour-host.access.log;

*注意这个要有pcre库,不然if处会报错


Q&A:

1、nginx日志实现自动分割了吗?
实际上没有,但是用apt/yum安装nginx时会自动配置logrotate。

logrotate作为一个/etc/cron.daily/logrotate任务每日定时执行。

你往/etc/logrotate.d/下添加配置文件logrotate执行时会自动根据配置文件进行日志归档。

如apt-get安装的Nginx官方源的日志归档配置文件为 /etc/logrotate.d/nginx。

参考:

http://www.iyunv.com/thread-110386-1-1.html

https://www.oschina.net/question/258792_173849

nginx日志切割总结的更多相关文章

  1. linux shell:nginx日志切割脚本

    需求原因:nginx不具备日志切割功能,日志量较大,方便分析. 实现目的:完成nginx日志切割,并根据时间命名   简要命令: mv /usr/local/tengine/logs/access.l ...

  2. nginx日志切割并使用flume-ng收集日志

    nginx的日志文件没有rotate功能.如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件.第一步就是重命名日志文件,不用担心重命名后nginx找不到日 ...

  3. Nginx访问日志、 Nginx日志切割、静态文件不记录日志和过期时间

    1.Nginx访问日志 配制访问日志:默认定义格式: log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_loc ...

  4. nginx 日志切割(也适用于docker)

    =============================================== 2019/4/6_第2次修改                       ccb_warlock 201 ...

  5. Nginx日志切割之Logrotate篇

    不管是什么日志文件,都是会越来越大的,大到一定程度就是个可怕的事情了,所以要及早的做处理,方法之一就是按时间段来存储,不过linux系统提供了Logrotate的日志管理工具,很好用,不用写计划任务脚 ...

  6. Linux centosVMware Nginx访问日志、Nginx日志切割、静态文件不记录日志和过期时间

    一.Nginx访问日志 vim /usr/local/nginx/conf/nginx.conf //搜索log_format  日至格式 改为davery格式 $remote_addr  客户端IP ...

  7. Nginx笔记总结十:Nginx日志切割

    1.Nginx日志切割 logrotate日志文件管理工具,通过cron程序定期执行,默认在cron默认程序的dayli目录下 [root@joker logrotate.d]# cat /etc/c ...

  8. nginx日志、nginx日志切割、静态文件不记录日志和过期时间

    2019独角兽企业重金招聘Python工程师标准>>> 12.10 Nginx访问日志 日志格式 vim /usr/local/nginx/conf/nginx.conf //搜索l ...

  9. Nginx访问日志.Nginx日志切割

    11月27日任务 12.10 Nginx访问日志12.11 Nginx日志切割12.12 静态文件不记录日志和过期时间 1.Nginx访问日志 示例一: 日志格式 vim /usr/local/ngi ...

随机推荐

  1. Docker - vim安装

    在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim. apt-get install vim 若提示: R ...

  2. SQLite FTS3/FTS4与一些使用心得

    此文已由作者王攀授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 简介 对于今天的移动.桌面客户端应用而言,离线全文检索的需求已经十分强烈,我们日常使用的邮件客户端.云音乐.云 ...

  3. pg mysql 比较

    PostgreSQL 与 MySQL比较: 一.pg优势: MySQL 不支持 OVER 子句, 而 Pg 支持 它可以存储 array 和 json, 可以在 array 和 json 上建索引, ...

  4. zipaligin的使用介绍

    近来一直在做APK反编译和重编译的工作,针对一些apk需要放入一些相应的文件,(当然这里不涉及非法盈利,都是有合约的),在对一些包打包以后,发现可以通过一个叫做zipalign的工具进行优化,对于这个 ...

  5. Linux命令应用大词典-第39章 网络安全

    39.1 rtacct:网络统计工具 39.2 nmap:报告远程主机特征 39.3 tcpdump:实现网络数据采集分析 39.4 iptstate:显示IP表状态表条目 39.5 nstat:监控 ...

  6. 【WXS】简要介绍说明

    WXS(WeiXin Script)是小程序的一套脚本语言. WXS有二种写法: 1) 以<wxs>标签书写脚本: 语法: <wxs module="[String]&qu ...

  7. 【转】unity3d 在UGUI中制作自适应调整大小的滚动布局控件

    转自 http://blog.csdn.net/rcfalcon/article/details/43459387 在游戏中,我们很多地方需要用到scroll content的概念:我们需要一个容器, ...

  8. .Net并行编程 - Reactive Extensions(Rx)并发浅析

    关于Reactive Extensions(Rx) 关于Reactive Extensions(Rx),先来看一下来自微软的官方描述: The Reactive Extensions (Rx) is ...

  9. pxe+kickstart无人值守安装

    常用软件安装及使用目录 第1章 以前是怎么安装系统的 l 光盘(ISO文件,光盘的镜像文件)===>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下 l U盘:ISO镜 ...

  10. CDH问题集

    1.在CM中添加主机报JDK错误 手动在机器上安装oracle-jdk1.7+update64.然后在CM中选择不安装oracle-jdk即可. 2.HostMoinitor无法与server联系 查 ...