前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx的日志管理和用定时任务完成日志切割

Nginx的日志管理和用定时任务完成日志切割

作者头像
星哥玩云
发布2022-07-04 13:55:30
5940
发布2022-07-04 13:55:30
举报
文章被收录于专栏:开源部署开源部署

Ngnix的日志管理和用定时任务完成日志切割

一、日志管理

  先来看看Ngnix的配置文件的server段

  接下来我们解释一下默认格式的具体意思

#log_format main '$remote_addr(远程IP) - $remote_user(远程用户) [$time_local](访问时间) "$request"(请求方式) '

 # '$status(状态302、404、401、403等) $body_bytes_sent(请求体 body 长度等) "$http_referer"(referer来源信息) '

 # '"$http_user_agent(用户代理)" "$http_x_forwarded_for(被转发的请求的原始IP)"';

 注:(1)http_x_forwarded_for:在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP

   (2)日志的格式我们也可以自己定义

  我们具体看一下日志记录的信息

  Ngnix允许针对不同的server做不同的log,接下来我们自己做一个 

  保存并退出,然后重新加载一次配置文件

 因为我们没开启日志格式,进入配置文件开启即可

  接下来重载配置文件成功,然后访问下服务器,再查看log目录下是否有kelly.log日志文件,然后在more kelly.log看是否有日志记录

二、用定时任务完成日志切割备份

  思路:用shell写一个脚本,每到00:00:01时就把昨天的日志按日期时间格式重命名,放在相应的目录下,再用USR1信息号控制ngnix重新生成新的日志文件。

  接下来我们在/usr/local/ngnix/data目录下做实验,创建一个shell脚本,文件名为runlog.sh

  我以下图对此脚本做详细解释

  我附上该shell脚本源码,方便读者做测试:

#!/bin/bash

base_path='/usr/local/nginx/logs'

log_path=$(date -d yesterday +"%Y%m")

day=$(date -d yesterday +"%d")

mkdir -p $base_path/$log_path

mv $base_path/access.log $base_path/$log_path/access_$day.log

#echo $base_path/$log_path/access_$day.log

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

接下来做个定时任务,按指定时间自动执行此脚本(这里我是做测试,所以我每分钟执行一下这个脚本,方便看效果)

  然后查看最终效果

  此时,我们已经完成了用定时任务执行脚本,然后做日志切割备份。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档