iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >Nginx访问日志切割的三种方法
  • 118
分享到

Nginx访问日志切割的三种方法

nginx运维服务器 2023-08-31 17:08:40 118人浏览 安东尼
摘要

1. 使用 shell 脚本实现 接下来,很简单,shell 脚本来了 #/bin/bash # author jiangexing set -e #脚本执行,遇到错就退出,不再往下执行 sleep 1 # 配合定时任务,0 点过

1. 使用 shell 脚本实现

接下来,很简单,shell 脚本来了

#/bin/bash # author  jiangexing set -e   #脚本执行,遇到错就退出,不再往下执行 sleep 1 # 配合定时任务,0 点过一秒再开始切割任务yesterday=$(date -d 'yesterday' +%Y-%m-%d)  #取得服务器当前时间ng_logs_dir='/var/log/Nginx'  #nginx 日志文件目录 if [ -d $ng_logs_dir ];then    #判断日志目录是否存在  cd $ng_logs_dir   mv access.log  access_${yesterday}.log  #通过 mv 命令将日志移动到分割后的日志,error 日志我一般不做切割  kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)  #发送 kill -USR1 信号给 Nginx 的主进程号,让 Nginx 重新生成一个新的日志文件  sleep 1  tar -czf  access_${yesterday}.log.tar.gz access_${yesterday}.log  #把旧的日志打成压缩包  rm -f  access_${yesterday}.log  #已有压缩包,删除压缩前的日志else  echo "日志目录不存在,请检查"  exit 0fi

这已经达到了我们想要的效果了,点个赞

当然还有最重要的一步,那就是要做好定时任务

crontable -l0 0 * * *  /usr/local/nginx/scripts/split.sh

2. 使用 logrotate 来实现

这种切割的方法,一开始我是不知道的,因为我之前的 nginx 都是使用源码安装的,在一次偶然的情况下,使用了 yum 安装的方式安装了 nginx,然后发现 nginx 的日志自动切割和压缩了,这就让我要去一探究竟了

后来发现,这个切割功能是由 logrotate 来实现的,接下来我们一起来看看看

如果系统没有安装logrotate 可以使用 

sudo yum install logrotate -y

进行安装

配置 logrotate

接下来我们就来配置 nginx 切割的配置文件,我的 nginx 日志路径在/var/log/nginx

我们在 /etc/logrotate.d/ 目录下新建一个 nginx 的文件

vim nginx #########以下为文件配置内容##############/var/log/nginx/*log   # 这里也可以写明对具体哪几个文件进行切割{    su root root    daily    dateext    missinGok    rotate 7    notifempty    compress    create 644 www www    sharedscripts    postrotate        [ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`    endscript}# 我们也可以先手 手动执行一下切割试试看看效果logrotate -f /etc/logrotate.d/nginx

查看执行后的结果:

 

没错,这就是我们想要的 ,这种方式和第一种还是比较像的。

logrotate 配置项详解

logrotate 的默认配置文件是 /etc/logrotate.conf。主要参数:

daily–>指定转储周期为每天

weekly–>指定转储周期为每周

monthly–>指定转储周期为每月

dateext–>在文件末尾添加当前日期

compress–>通过 gzip 压缩转储以后的日志

nocompress–>不需要压缩时,用这个参数

copytruncate–>先把日志内容复制到旧日志文件后才清除日志文件内容,可以保证日志记录的连续性

nocopytruncate–>备份日志文件但是不截断

create mode owner group–>转储文件,使用指定的文件模式创建新的日志文件

nocreate–>不建立新的日志文件

delaycompress 和 compress –>一起使用时,转储的日志文件到下一次转储时才压缩

nodelaycompress–>覆盖 delaycompress 选项,转储同时压缩。

errors address–>专储时的错误信息发送到指定的 Email 地址

ifempty–>即使是空文件也转储,这个是 logrotate 的缺省选项。

notifempty–>如果是空文件的话,不转储

mail address–>把转储的日志文件发送到指定的 E-mail 地址

nomail–>转储时不发送日志文件

olddir directory–>转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统

noolddir–>转储后的日志文件和当前日志文件放在同一个目录下

rotate count–>指定日志文件删除之前转储的次数,0 指没有备份,5 指保留 5 个备份

tabootext [+] list 让 logrotate –> 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~

size–> size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及 KB (sizek)或者 MB (sizem).

prerotate/endscript –>在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行

postrotate/endscript –>在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

3. 高级用法–使用 nginx 本身来实现

当 nginx 在容器里,把 nginx 日志挂载出来的时候,我们发现就不适合再使用 kill -USR1 的方式去分割日志

这时候当然就需要从 nginx 本身配置去解决这个问题了,我们都知道访问日志里面都有一个时间相关的字段,如果我们把这个时间捞出来,这个问题就解决了

在对用的 nginx 配置文件中添加如下配置

     if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {            set $year $1;            set $month $2;            set $day $3;     }     access_log /var/log/nginx/${year}_${month}_${day}_access.log JSON;

这个的日志切割可以达到秒级,用法都是一样的,去正则匹配到时间戳就好了。nginx 内置的变量有很多,列如 ${server_name} 这些变量都是可以用来命名日志

当然如果我们需要压缩,就写个对应的定时任务去做压缩就好了

来源地址:https://blog.csdn.net/qq_30029665/article/details/130689905

--结束END--

本文标题: Nginx访问日志切割的三种方法

本文链接: https://www.lsjlt.com/news/386505.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Nginx访问日志切割的三种方法
    1. 使用 shell 脚本实现 接下来,很简单,shell 脚本来了 #/bin/bash # author jiangexing set -e #脚本执行,遇到错就退出,不再往下执行 sleep 1 # 配合定时任务,0 点过...
    99+
    2023-08-31
    nginx 运维 服务器
  • MongoDB日志切割的三种方式总结
    目录前言方法如下1. 通过 MongoDB 管理命令进行切割2. 通过 Linux 系统自带的服务 logrotate 进行切割3. 通过向进程发送 SIGUSR1 信号来切割日志总...
    99+
    2022-11-12
  • Tomcat日志自动分割的三种方法
    目录1、方法一:使用 cronolog2、方法二:使用 rotatelogs3、方法三:使用脚本修改前的 tomcat 都是将所有数据保存在一个日志文件 catalina.out 中...
    99+
    2022-11-13
  • nginx多server日志分割的方法
    本篇内容介绍了“nginx多server日志分割的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1,配置多个server日志只要在$we...
    99+
    2023-06-09
  • Apache日志分割的3种方法
    一、rotatelogs(apache 自带的工具)     rotatelogs是一个配合Apache管道日志功能使用的简单程序。举例:     CustomLog "|bin/rotatelogs /var/logs/logf...
    99+
    2023-01-31
    种方法 日志 Apache
  • 禁止IP访问网站的多种方法分享(linux,php,nginx,apache)
    禁止IP访问网站的各种方法有许多,不同服务器环境的方法会所有不同,下面我总结我们常用的禁止IP访问网站的实现配置方法,希望对大家会有所帮助PHP禁止某个IP或IP段访问废话不多说,客官请看:< //禁止某个IP$banned...
    99+
    2023-06-05
  • Go Web编程添加服务器错误和访问日志的方法
    这篇文章主要介绍了Go Web编程添加服务器错误和访问日志的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go Web编程添加服务器错误和访问日志的方法文章都会有所收获,下面我们一起来看...
    99+
    2023-07-02
  • 外部web端访问微信小程序云数据库的三种方法总结
    目录前言一、HTTP API 方式1、web端调用云函数二、Web SDK 在 Web 中使用1.Web SDK 在 Web 中使用,可以访问云开发资源,既支持公众号登录态、也支持未...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作