nginx自动切割访问日志方法二

由于nginx的日志本身只是支持按照server_name或者大小进行划分,对于习惯了apache的按照一个网站每天一个日志的我来说是不可以接受的,于是从网上找了几个nginx按天分割的方法发现都是互相抄袭的,特别是里面有一个命令是kill -9 `cat nginx.pid`,需要杀掉nginx子进程,我觉得不靠谱。

我忽然想到我以前在做openstack的云存储开发时,对rsyslog的日志进行分割的方法,一用果然好用

原理是:

1.从一台已经安装好apache的机器上的apache bin目录下把rotatelogs拷贝到本机的/opt/nginx_logs下

mkdir -p /opt/nginx_logs

  1. cp rotatelogs /opt/nginx_logs/
  2. chmod +x /opt/nginx_logs/rotatelogs

2.创建有名管道

mkdir /opt/nginx_logs/abc_www/

  1. mkfifo /opt/nginx_logs/abc_www/access_log

3.在nginx配置文件server中加上

access_log /opt/nginx_logs/abc_www/access_log;

4.创建日志目录

  1. mkdir /opt/nginx_logs/abc_www/log/

5.创建日志分割脚本

  1. [[email protected] nginx_logs]# cat /opt/nginx_logs/abc_www/rotate.sh
  2. baselogdir=/opt/nginx_logs/abc_www
  3. rotatelogs=/opt/nginx_logs/rotatelogs
  4. while [ 1 ]
  5. do
  6. echo `date +"%F %T"`" rotatelogs access start"
  7. $rotatelogs $baselogdir/log/access_%Y%m%d.log 86400 480 < $baselogdir/access_log
  8. echo `date +"%F %T"`" rotatelogs access stop"
  9. sleep 1;
  10. done

6.创建启动日志分割脚本

  1. [[email protected] nginx_logs]# cat /opt/nginx_logs/abc_www/run.sh
  2. sh /opt/nginx_logs/abc_www/rotate.sh >> /opt/nginx_logs/abc_www/log/access-rotate.log 2>&1 &

7.最终效果

时间: 2024-10-12 08:45:18

nginx自动切割访问日志方法二的相关文章

nginx自动切割访问日志方法一

Web 访问日志 (access_log) 记录了所有外部客户端对Web服务器的访问行为,包含了客户端IP,访问日期,访问的URL资源,服务器返回的HTTP状态码等重要信息.一条典型的Web访问日志如下: 112.97.37.90 - - [14/Sep/2013:14:37:39 +0800] "GET / HTTP/1.1" 301 5 "-" "Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; Lenovo A

Nginx配置:访问日志,日志切割,静态文件不记录日志和过期时间

一.访问日志 1.查看Nginx日志格式 [[email protected] ~]# grep -A2 log_format /usr/local/nginx/conf/nginx.conf log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' ' $host "$request_uri" $status' ' "$http_referer" "$htt

91.Nginx配置:访问日志,日志切割,静态文件不记录日志和过期时间

一.访问日志 1.查看Nginx日志格式 [[email protected] ~]# grep -A2 log_format /usr/local/nginx/conf/nginx.conflog_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'' $host "$request_uri" $status'' "$http_referer" "$http_u

使用hive分析nginx访问日志方法

以下案例是使用hive分析nginx的访问日志案例,其中字段分隔通过正则表达式匹配,具体步骤如下: 日志格式: 192.168.5.139 - - [08/Jun/2017:17:09:12 +0800] "GET //oportal/static/ui/layer/skin/default/icon.png HTTP/1.1" 200 9905 http://192.168.100.126//oportal/static/ui/layer/skin/layer.css "M

多台linux无密码访问之方法二

一:实验环境同"多台linux无密码访问之方法一" 二:配置过程 前3步同"多台linux无密码访问之方法一" ★第四步不同于方法一 4.在.ssh目录下创建一个名为config的文件并设置正确权限 manager:~/.ssh # touch config manager:~/.ssh # cat config StrictHostKeyChecking no UserKnownHostsFile /dev/null manager:~/.ssh # chmod

常用的shell(备份数据库、备份网站、切割访问日志)

备份网站程序 #!/bin/bash /bin/tar czf /mnt/backup_website/web_$(date +%Y%m%d_%H%M%S).gz.tar /mnt/wwwroot/web cd /mnt/backup_website find . -mtime +1 -name "*20[1-9][3-9]*" | xargs rm -f exit 0 备份数据库 #!/bin/bash /bin/tar czf /mnt/backup_website/newjiag

自定义nginx访问日志和内置变量使用

自定义nginx访问日志和内置变量使用 安装第三方echo模块后查看内置变量 内置变量 1.$args 用户在浏览器中查找的相关参数(uri中?之后的字段)2.$document_root 站点根目录所在的位置3.$document_uri 去除url中域名部分后所剩下的目录4.$host 所访问的主机5.$http_user_agent 客户端所使用的浏览器6.$http_cookie 客户端的cookie信息7.$limit_rate 客户端的下载速率0表示不限制速度 server { se

Nginx安装的两种方法

Nginx安装的两种方法 方法一:通过操作系统的包管理器进行安装. centos操作系统,自带的包管理器就是yum,配置yum源,通过yum源安装nginx的方法很简单,这就是方法一的优点:方法一的缺点就是,我们安装nginx时,无法定义安装哪些模块.这里我们解释一下模块的概念,nginx的结构是高度的模块话的,不同的模块拥有不同的功能,所以,我们想要在使用nginx的时候可以使用某些特定的功能就必须安装对应的模块.不过,yum安装的nginx,包含了常用的基本模块,不需要我们安装模块.方法二与

十二周三课 Nginx访问日志、 Nginx日志切割、 静态文件不记录日志和过期时间

Nginx访问日志 Nginx的文件格式存在于主配置文件中./usr/local/nginx/conf/nginx.conf然后搜索log_format找到他的配置文件这样我们就可以进行日志的格式配置了. 我们常用如下配置.$remote_addr客户端IP(公网IP)$http_x_forwarded_for代理服务器的IP$time_local服务器本地时间$host访问主机名(域名)$request_uri访问的url地址$status状态码$http_refererreferer$htt