Nginx指定日志文件和定时任务备份日志

6 篇文章 0 订阅
6 篇文章 0 订阅

一.给虚拟主机指定日志文件

1.指定日志文件

Nginx允许不同的server使用不同的日志文件,修改Nginx配置文件如下:

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    server {
    	listen 80;
		server_name a.com;
		access_log logs/a.com.access.log main;
		location / {
			root /application;
			index index.html;		
		}
    }
	
	server {
		listen 1234;
		server_name b.com;		
		location / {
			root test;
			index index.html;
		}
	}
}

2.重新加载配置文件

[root@data1 nginx]# ./sbin/nginx -s reload

  查看当前日志文件

[root@data1 logs]# pwd 
/usr/local/nginx/logs
[root@data1 logs]# ll
总用量 16
-rw-r--r--. 1 root   root     0 7月  27 12:56 access.log
-rw-r--r--. 1 root   root     0 7月  27 12:56 a.com.access.log
-rw-r--r--. 1 nobody root 11713 7月  27 12:56 error.log
-rw-r--r--. 1 root   root     5 7月  24 20:50 nginx.pid
[root@data1 logs]# cat access.log 
[root@data1 logs]# cat a.com.access.log 
[root@data1 logs]#

  当前access.log和a.com.access.log文件都是空的

3.访问测试

3.1 访问a.com

  查看日志

[root@data1 logs]# cat access.log 
[root@data1 logs]# cat a.com.access.log 
192.168.190.1 - - [27/Jul/2018:12:58:38 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36" "-"
[root@data1 logs]# 

 只有a.com.access.log中有写入访问日志

 3.2 访问b.com:1234

  查看日志

[root@data1 logs]# cat access.log 
192.168.190.1 - - [27/Jul/2018:13:03:24 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36" "-"
[root@data1 logs]# cat a.com.access.log 
192.168.190.1 - - [27/Jul/2018:12:58:38 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36" "-"
[root@data1 logs]# 

  可以看出访问a.com的时候访问记录是保存在a.com.access.log中, 

  访问b.com:1234的时候访问记录是保存在默认的日志文件access.log中

 

二.定时任务备份日志

1.创建一个shell脚本,用于备份日志文件

[root@data1 nginx]# cat bak_log.sh 
#!/bin/bash
base_path='/usr/local/nginx/logs'          # 日志根目录
log_path=$(date -d yesterday +"%Y%m")      # 备份日志目标目录,使用年月生成,即一个月的日志备份在同一个目录
second=$(date -d yesterday +"%H:%M:%S")    # 这里用当前时间的时分秒来作为文件名
mkdir -p $base_path/$log_path              # 创建目标目录
mv $base_path/access.log $base_path/$log_path/access_$second.log  # 备份日志
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`  # 重读日志

  这里为了方便演示,以时分秒为文件后缀

2.创建crontab创建定时任务

  使用crontab -e编辑定时任务,添加(同vi操作)以下内容:

  */1 * * * * sh /usr/local/nginx/bak_log.sh

  查看定时任务crontab -l

[root@data1 nginx]# crontab -l
*/1 * * * * sh /usr/local/nginx/bak_log.sh  # 一分钟执行一次"sh /usr/local/nginx/bak_log.sh"这个命令

  关于crontab定时任务详见 http://man.linuxde.net/crontab

3.查看日志文件

[root@data1 logs]# pwd
/usr/local/nginx/logs
[root@data1 logs]# ll
总用量 24
drwxr-xr-x. 2 root   root  4096 7月  28 17:41 201807
-rw-r--r--. 1 nobody root     0 7月  28 17:41 access.log
-rw-r--r--. 1 nobody root   392 7月  27 13:04 a.com.access.log
-rw-r--r--. 1 nobody root 11774 7月  27 13:02 error.log
-rw-r--r--. 1 root   root     5 7月  24 20:50 nginx.pid

  如图,在nginx的logs目录下已经生成了201807这个目录,查看201807

[root@data1 logs]# ll 201807/
总用量 4
-rw-r--r--. 1 nobody root 422 7月  28 17:45 access_17:46:01.log

  可以看出日志 已经备份到201807这个目录下了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值