linux CentOS7 下 Nginx 1.13.7 日志管理(定时任务完成日志切割)
来源:互联网 发布:java 线程池 串行 编辑:程序博客网 时间:2024/06/09 14:32
默认日志
默认情况下nginx使用logs/access_log 日志文件。
为了运维需要我们会定时备份access_log。
可是nginx在运行期间备份access_log后即便修改了名字依旧会向修改后的access_log中写入日志(与linux文件系统管理方法有关inode)。
解决办法一、停止nginx服务,再备份access_log文件。
解决办法二(推荐)、无需停止nginx服务,使用usr1命令
1、修改access.log文件名为备份文件名如access.bak.log
2、找到nginx进程id ps -aux | nginx
3、kill -s usr1 79123
这是在进入logs目录查看产生了一个新的access.log文件,并且nginx正在写入日志(有访问的情况下)。
突发奇想的解决办法三(强烈不推荐)、无需停止nginx服务
1、修改nginx.conf中配置文件名称
2、使用reload或usr1命令,从新加载配置文件。
日志内容
日志记录内容项在nginx.conf中配置。
默认的日志策略是main。你也可以自行编辑使用的策略。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
具体可以看官网 http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format1:remote_addr 远程访问ip地址---[192.168.1.5]2:remote_user 远程访问用户3:timelocal 访问时间---[02/Dec/2017:14:32:35+xxxx]4:request 访问方式以及协议---[GET/HTTIP1.1]5:status 返回状态---[304]6:body_bytes_sent 发送给客户端的字节数7:http_referer 从哪个页面链接过来的8:http_user_agent 用户代理/蜘蛛 ,被转发的请求的原始IP9:http_x_forwarded_for:在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP
单独为每个server配置日志
nginx可以单独为每个server配置日志文件。
在server下增加access_log项,文件位于logs/host.access.log ,使用main日志策略。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; server { listen 80; server_name localhost;access_log logs/host.access.log main; location / { root html; index index.html index.htm; }}
退出保存nginx.conf,
重新加载配置或重启nginx服务。
可以看出reload后新的日志文件有了大小的变化。
使用定时任务完成日志分隔
1、首先建一个shell脚本runlog.sh,位于/bin/bash /usr/local/nginx/data下。
这个脚本的作用是将日志文件备份并新建日志文件,通知nginx使用新的日志文件
#!/bin/bash#日志文件所在位置LOGPATH=/usr/local/nginx/logs/host.access.log#备份后的位置BASEPATH=/usr/local/nginx/data#备份后的文件名称(按年月日编名)bak=$BASEPATH/$(date -d yesterday +%Y%m%d%H%M).host.access.log#echo $bak#移动备份文件mv $LOGPATH $bak#新建的日志文件touch $LOGPATH#通知nginx使用新的日志文件kill -usr1 $(cat /usr/local/nginx/logs/nginx.pid)
2、创建计划任务
这个任务是每分钟执行一次。主要是便于测试
$crontab -e
*/1 * * * * /bin/bash /usr/local/nginx/data/runlog.sh
看到上图已经自动每分钟备份一次日志文件。
阅读全文
0 0
- linux CentOS7 下 Nginx 1.13.7 日志管理(定时任务完成日志切割)
- nginx(日志管理之日志的使用、定时任务完成日志切割)
- 定时任务完成日志切割
- Linux下nginx日志每天定时切割
- Linux 定时切割日志任务
- docker 内cron建立定时任务完成nginx 日志轮询切割
- nginx日志定时切割脚本
- 每天定时切割nginx日志
- Nginx日志定时切割脚本
- Linux下,nginx如何切割访问日志?
- Linux下nginx生成日志自动切割
- Linux下Nginx如何切割访问日志?
- Linux下Nginx如何切割访问日志?
- Linux下nginx日志自动切割
- Linux下定时切割Nginx访问日志并打包压缩的Shell脚本
- Linux下添加shell脚本使得nginx日志每天定时切割压缩
- Linux下添加shell脚本使得nginx日志每天定时切割压缩
- 编写定时切割Nginx日志脚本
- 阿里发布鲁班智能设计平台,将大规模赋能新商业
- 第一篇
- Java基础之IO
- Junit测试相关笔记
- 根据pdf转换成tif图片
- linux CentOS7 下 Nginx 1.13.7 日志管理(定时任务完成日志切割)
- the cdb process terminated
- 数据库之-高性能MySQL
- sql首次执行快,后续慢(_optimizer_use_feedback)
- SSH------jsp将数据传递给action
- 数据库之-乐观锁与悲观锁
- 字符串与xml格式之间的转换
- [实用]Dev-c++中你所不知道的快捷键
- jsp和servlet