nginx日志切割总结
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日志切割总结的更多相关文章
- linux shell:nginx日志切割脚本
需求原因:nginx不具备日志切割功能,日志量较大,方便分析. 实现目的:完成nginx日志切割,并根据时间命名 简要命令: mv /usr/local/tengine/logs/access.l ...
- nginx日志切割并使用flume-ng收集日志
nginx的日志文件没有rotate功能.如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件.第一步就是重命名日志文件,不用担心重命名后nginx找不到日 ...
- Nginx访问日志、 Nginx日志切割、静态文件不记录日志和过期时间
1.Nginx访问日志 配制访问日志:默认定义格式: log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_loc ...
- nginx 日志切割(也适用于docker)
=============================================== 2019/4/6_第2次修改 ccb_warlock 201 ...
- Nginx日志切割之Logrotate篇
不管是什么日志文件,都是会越来越大的,大到一定程度就是个可怕的事情了,所以要及早的做处理,方法之一就是按时间段来存储,不过linux系统提供了Logrotate的日志管理工具,很好用,不用写计划任务脚 ...
- Linux centosVMware Nginx访问日志、Nginx日志切割、静态文件不记录日志和过期时间
一.Nginx访问日志 vim /usr/local/nginx/conf/nginx.conf //搜索log_format 日至格式 改为davery格式 $remote_addr 客户端IP ...
- Nginx笔记总结十:Nginx日志切割
1.Nginx日志切割 logrotate日志文件管理工具,通过cron程序定期执行,默认在cron默认程序的dayli目录下 [root@joker logrotate.d]# cat /etc/c ...
- nginx日志、nginx日志切割、静态文件不记录日志和过期时间
2019独角兽企业重金招聘Python工程师标准>>> 12.10 Nginx访问日志 日志格式 vim /usr/local/nginx/conf/nginx.conf //搜索l ...
- Nginx访问日志.Nginx日志切割
11月27日任务 12.10 Nginx访问日志12.11 Nginx日志切割12.12 静态文件不记录日志和过期时间 1.Nginx访问日志 示例一: 日志格式 vim /usr/local/ngi ...
随机推荐
- .net core 基于multipart/form-data的文件上传,这里以图片上传为例
首先传递的数据格式大概如下: 然后就可以在后端获取数据了:直接上代码了哈: [HttpPost] ///分别获取 data数据和调用图片上传方法 public async Task< ...
- linux (rm指令) 及误删除解决
今天在群里看见这一幕: 看到这儿,我们学习一下 这个RM指令 rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉.对于链接文件,只是删除整个链接文件 ...
- Android stdio build.gradle buildscript 里面的repositories 和allprojects里面 repositories 的区别
第一段 buildscript 里面的 repositories 表示只有编译工具才会用这个仓库. 比如 buildscript 里面的 dependencies classpath 'com.and ...
- Linux下安装Nginx并实现socket代理
nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息. 正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好. ububtu平台编译环 ...
- 二进制描述子 BRIEF(ORB), BRISK, FREAK
二进制描述子设计原则体现在三个部分: 采样pattern 方向orientation compensation 配对sampling pairs ORB基于BRIEF: BRISK是用于OKVIS的描 ...
- 一个小白的测试环境docker化之路
本文来自网易云社区 作者:叶子 学习docker搭建测试环境断断续续也有三个多月了,希望记录一下这个过程.常言道,总结过去,展望未来嘛~文章浅显,还望各位大神路过轻拍. 按照国际惯例,先说一下背景: ...
- C#新特性记录
C#6.0新特性笔记 Getter专属赋值 可以在构造函数中,给只有get的属性赋初始值. class Point { public int x { get; } public Point() { x ...
- 怎样安装Android Studio
在浏览器地址栏输入 http://www.android-studio.org/ 打开Android Studio中文社区, 下载安装包: 这里需要注意的是SDK的目录, 我没有选择默认的目录, 而是 ...
- Git一分钟系列--快速安装git客户端
在项目开发过程中,几乎所有公司都会用到版本控制工具来管理自己的项目资源文件,比如Git,SVN. 什么是svn? 版本控制软件,通过svn来实现版本控制首先需要搭建一个服务器,在服务器上创建仓库保存项 ...
- python基础之全局局部变量及函数参数
1.局部变量和全局变量 1.1局部变量 局部变量是在函数内部定义的变量,只能在定义函数的内部使用 函数执行结束后,函数内部的局部变量会被系统收回 不同函数可以定义相同名字的局部变量,但是各用个的互不影 ...