共计 1834 个字符,预计需要花费 5 分钟才能阅读完成。
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`
接下来做个定时任务,按指定时间自动执行此脚本(这里我是做测试,所以我每分钟执行一下这个脚本,方便看效果)
然后查看最终效果
此时,我们已经完成了用定时任务执行脚本,然后做日志切割备份。
————————————– 分割线 ————————————–
CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm
使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm
搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm
CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm
CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm
CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm
Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm
Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm
Nginx 的详细介绍 :请点这里
Nginx 的下载地址 :请点这里