NGINX按天切割日志

  • NGINX按天切割日志

偶然发现access.log有46G大,所以将其切割。

Nginx 是一个非常轻量的 Web 服务器,体积小、性能高、速度快等诸多优点。但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将 导致日志文件容量非常大,不便于管理。当然了,我们也不希望看到这么庞大的一个访问日志文件,那需要手动对这个文件进行切割。

在 Linux 平台上 Shell 脚本丰富,使用 Shell 脚本+crontab 命令能非常方便地进行切割,操作简单,方便快捷。

  • 日志文件切割要求

由于 Nginx 的日志都是写在一个文件当中的,因此,我们需要每天零点将前一天的日志存为另外一个文件,这里我们就将 Nginx 位于 logs 目录中的 access.log 存为 access_[yyyy-MM-dd].log 的文件。

  • SHELL脚本代码

#vim nginx.sh

#!/bin/bash

logs_path=/alidata/server/nginx/logs                    ## Nginx 日志文件所在的目录

today=$(date -d "today" +%Y-%m-%d)                     ## 获取昨天的 yyyy-MM-dd

mv ${logs_path}/access.log ${logs_path}/access_${today}.log     ##移动到指定路径

kill -USR1 $(cat /alidata/server/nginx/logs/nginx.pid)       ##向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件

上面这个脚本中的最后一行必须向 Nginx 的进程发送 USR1 信号以重新打开日志文件,如果不写的话,Nginx 会继续将日志信息写入 access_[yyyy-MM-dd].log 的那个文件中,这显然是不正确的。

给脚本权限

#chmod +x /root/nginx.sh

  • 加入到crontab里

#crontab -e

59 23 * * * /root/nginx.sh


  • 结果如下

时间: 2024-10-17 19:45:10

NGINX按天切割日志的相关文章

nginx按分钟切割日志

网上有许多按照天切割日志的.但是由于应用需要,对该web服务器进行更详细的分析!所以要按照分钟切割.研发部门的要求是他们有一个工具是扫描日志的工具,扫描完成后的日志会有.complete的后缀,扫描完的日志全部移到history_logs中.采用的是两个脚本来完成的此需求! 1.切割日志的脚本如下: vim nginx_log.sh #!/bin/bash #将nginx的日志按照分钟切割 #定义日志文件的路径 logs_path=/opt/nginx/logs/ #定义nginx的进程号的路径

Nginx脚本方式切割日志

#!/bin/bash #Nginx的log日志目录 log_path='/opt/app/nginx/logs/' #Nginx的pid文件存放目录 pid_path="${log_path}nginx.pid" #清理掉指定日期前的日志 DAYS=60 #生成昨天的日志文件 #若指定10天前  date -d"10 day ago 2017-06-08" +%Y-%m-%d mv ${log_path}access.log ${log_path}access_$

Nginx日志文件格式及切割日志文件

作为web服务器而言,日志是必不可少的也是需要经常查看的.此篇就来介绍下如何自定义Nginx中的日志格式以及使用crontab计划任务来做到每天切割一次日志文件从而做到方便管理. 在Nginx中日志文件是由log_format这个指令来定义的,它的语法如下: log_format    name    format ##    name:指的是日志格式的名称(后面调用) ##    format:设置日志具体格式的 在Nginx中有自己默认的日志格式,如下内容:     #log_format 

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

Nginx 基本配置和日志分析

最近在维护的一个项目,路由转发规则都统一通过Nginx转发,所以再次参考部分博文和书本,熟悉Nginx的基本配置,还有一个重点也是日志的分析 Nginx 常用模块是server块,location块. 常用的location块配置: 语法规则: location [=|~|~*|^~] /uri/ { … } = 表示精确匹配,这个优先级也是最高的 ^~ 表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~

linux开机启动过程、PATH、过滤一级目录、cd的参数、ls -lrt、命令切割日志

      第二波命令正向我方来袭 :开机启动过程.PATH.过滤一级目录.cd的参数.ls -lrt.命令切割日志 1.1 linux开机启动过程 1.1.1  开机自检(BIOS)-- MBR引导 -- GRUB菜单 -- 加载内核(kernel)-- 运行INIT进程 -- 读取/etc/inittab配置文件 -- 执行/etc/rc.sysinit脚本(初始化脚本,如设置ip,hostname) -- 执行/etc/rc.d/rc(根据运行级别开机自启的软件)脚本 -- 启动/sbin

linux服务器自动切割日志

需求 由于nginx的日志会不停地增大,所以需要我们自己去切割日志,方便管理,需要达到以下的效果: 按日期自动切割日志,最小单位是天. 当日志总量超过一定量时,自动直接清理日志,限定总量不能超过1000MB. 写入crontab定时任务里. 分析 nginx日志目录下分别有access.log和error.log,按照日期自动切割日志则需要将每天的日志以"yyyymmdd_access/error.log"的格式保存下来,用mv重命名每一天的日志文件即可. 清理日志就简单了,只需要判断

NGINX配置之一:日志篇

打开nginx.conf配置文件: vi /usr/local/nginx/conf/nginx.conf 日志部分内容: 日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式. #access_log logs/access.log main; 默认“main”日志格式: 参数明细表: $remote_addr 客户端的ip地址(代理服务器,显示代理服务ip) $remote_user 用于记录远程客户端的用户名称(一般为“-”) $t