首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏PHP修行之路

    nginx分割日志

    实现nginx日志按照时间分割存储 backups_log.sh #设置log日志的存储地址 LOG_PATH=/home/soft/nginx/logs #设置历史日志的存储地址 HISTORY_LOG_PATH =/home/soft/nginx/history_logs #获取分割日志时所需要的时间当做日志文件名称 TIME=$(date +%Y-%m-%d) #将当前日志备份到指定存储目录 mv ${LOG_PATH kill -USR1 nginx_pid 之前,即便已经对文件执行了mv命令也只是改变了文件的名称,nginx还是会向新命名的文件中照常写入日志数据。 原因在于linux系统中,内核是根据文件描述符来找文件的 2.添加定时任务后如果定时任务没有起作用,则使用 ps -aux | grep cron 确认下服务是否已经开启 3. -USR1 是进程间通信的信号中的一种,至于nginx进程接收到该信号做什么操作是它内部定义的,除此之外我们可以使用 kill -l 确认liunx中包含哪些信号

    95920发布于 2019-07-23
  • 来自专栏运维技术迷

    Nginx脚本方式分割日志

    /bin/sh # nginx日志路径 LOGS_PATH=/data/wwwlogs/ TODAY=$(date -d 'today' +%Y-%m-%d) # 移动日志并改名 mv ${LOGS_PATH error.log ${LOGS_PATH}/error_${TODAY}.log mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${TODAY}.log # 向nginx 主进程发送重新打开日志文件的信号 kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) 把上面脚本保存后,加入到crontab里面就可以了。

    39520编辑于 2023-10-19
  • 来自专栏性能与架构

    Linux nginx日志按天分割实例

    nginx日志有个小缺点,日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将导致日志文件非常大,不便于管理 这就需要我们自己来实现了,按日期每天生产一个日志文件 思路 每天零点把默认日志文件改名为当天日期 ,再重新打开新的日志文件 使用定时任务来执行脚本,脚本中执行改名和重新打开日志文件的操作 向Nginx主进程发送 USR1 信号,就可以重新打开日志文件 实现 #/bin/bash #备份日志的路径 bakpath='/home/nginx/logs' #nginx日志路径 logpath='/usr/local/nginx/logs' #在备份路径下创建年月子目录 mkdir -p $bakpath /$(date +%Y)/$(date +%m) #移动日志文件到备份路径,并改名为日期格式 mv $logpath/access.log $bakpath/$(date +%Y)/$(date +% $(date +%Y%m%d).log #用 USR1 信号让nginx重新打开日志文件 kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

    2.8K50发布于 2018-04-03
  • 来自专栏硬核项目经理的专栏

    Nginx40】Nginx学习:动静分离与日志分割

    Nginx学习:动静分离与日志分割 放轻松放轻松,最后两篇文章学习的内容是比较轻松的。首先,我们来看看 Nginx 动静分离的概念,然后再看看怎么为 Nginx日志分割日志分割 另一个非常常见的面试题,同时也是非常常用的操作,就是对 Nginx日志进行分割。这是什么意思?其实呀,就是我们的访问日志或者错误日志,经年累月的积累,会变得非常多,单个文件也会非常大。 通常我们都会按天对这些日志进行分割分割之后又会压缩备份或者直接发送走用于处理分析。 Nginx 默认没有日志分割的功能,但是它可以重载配置文件,也可以重开日志句柄,有这两个功能,其实就为我们进行日志分割提供了基础了。那么我们就写一个简单的 shell 脚本来实现吧。 对于 宝塔 这种面板工具来说,在它的计划任务功能中,直接就提供了日志分割的功能。而且这个功能也比较强大,可以按单独的站点,也可以全部都分割,还可以保留多少份备份。

    47220编辑于 2023-11-13
  • 【详解】Nginx日志按日期分割的实现

    Nginx日志按日期分割的实现在Web服务器管理中,日志文件是监控服务器性能、分析用户行为和排查问题的重要工具。 本文将介绍如何配置Nginx,使其日志文件能够自动按日期进行分割,并提供一些额外的技巧来优化日志管理流程。1. Nginx日志基本配置首先,我们需要了解Nginx的基本日志配置。 2. 使用logrotate进行日志分割虽然Nginx本身不直接支持日志文件的自动按日期分割,但可以通过外部工具​​logrotate​​来实现这一功能。​​ 通过上述步骤,你可以实现 Nginx 日志的自动按日期分割,从而有效地管理日志文件。Nginx 日志按日期分割是一个常见的需求,特别是对于高流量的网站来说,这样做可以方便日志管理和分析。 总结以上两种方法都可以实现 Nginx 日志按日期分割。​​

    65810编辑于 2025-10-23
  • 来自专栏运维笔记

    常用APP等日志分割nginx日志分析脚本合集

    [针对app,resin,tomcat日志分割脚本]\ [appname:填写app(包含resin/tomcat)的名字;] [key:过滤日志关键字,避免删除其他不必要的文件;\ ] [cleanday :日志保存的周期,缺省保存30天;] [cleanlog:删除日志的记录保存的目录] [核心命令: find命令去查找日志目录下含关键字的日志文件,然后利用for循环去删除\$cleanday之前的日志文件 >> $cleanlog/delete.log fi [针对nginx日志分割脚本:] #! /bin/bash   path=/data/log/nginx  nginx=` cat /usr/local/nginx/logs/nginx.pid `  mv  $path/access.log     $path/access_`date +%Y%m%d`.log  kill -USR1 $nginx       #使用USR1参数通知Nginx进程切换日志文 [] #!

    78420发布于 2019-01-30
  • 来自专栏后端技术探索

    nginx 直接在配置文章中设置日志分割

    直接在nginx配置文件中,配置日志循环,而不需使用logrotate或配置cron任务。需要使用到$time_iso8601 内嵌变量来获取时间。 按天分割日志 使用下面的代码块 if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") { set $year $1; set $month $2; set <day>\d{2})") {} access_log /data/logs/nginx/www.ttlsa.com-$year-$month-$day-access.log; 按时、分、秒分割 $2; set $day $3; set $hour $4; set $minutes $5; set $seconds $6; } 非常方便的进行日志分割。 建议按小时分割日志,方便分析查询日志

    1.6K10发布于 2018-08-09
  • 来自专栏冰河技术

    Nginx】如何按日期分割Nginx日志?看这一篇就够了!!

    写在前面 Nginx是没有以日期格式作为文件名来存储的,也就是说,Nginx不像Tomcat,每天自动生成一个日志文件,所有的日志都是以一个名字来存储,时间久了日志文件会变得很大。这样非常不利于分析。 分割Nginx日志 首先,我们要创建一个脚本文件,用来分割Nginx日志,具体脚本如下: vim /usr/local/nginx-1.19.1/cutnginxlog.sh 脚本内容如下: #! # nginx日志路径 LOGS_PATH=/usr/local/nginx-1.19.1/logs TODAY=$(date -d 'today' +%Y-%m-%d) # 移动日志并改名 mv -1.19.1/cutnginxlog.sh >> /usr/local/nginx-1.19.1/cutnginxlog.log 2>&1' >> /etc/crontab 意思就是在每天的23点59 将自动任务的执行日志(错误和正确的日志)自动写入cutnginxlog.log,“命令 >> 2>&1” 表示以追加方式将正确输出和错误输出都保存到同一个文件中。 好了,今天就聊到这儿吧!

    2.6K20发布于 2020-10-29
  • Nginx日志分割:Shell脚本与Logrotate的比较与实现

    一、使用Shell脚本实现Nginx日志分割Shell脚本是实现日志分割的一种简便方法,通过定期执行Shell脚本来切割日志文件,并将旧日志进行压缩和备份。 1.1 Shell脚本实现日志分割的基本步骤我们可以编写一个简单的Shell脚本来自动化这个过程,以下是一个基本的Nginx日志分割脚本示例:#! systemctl reload nginx 用于重新加载Nginx,确保新日志文件开始记录。1.3 优缺点优点:灵活性高:可以根据实际需求自由定制日志分割的规则。 /null 2>/dev/null || true endscript}2.3 配置说明daily:指定日志分割的频率为每日。 Logrotate:适用于大多数标准的日志分割需求,尤其是生产环境中,能够提供稳定和高效的自动化管理。四、结论在Nginx日志分割的实现上,Shell脚本和Logrotate各有优劣。

    57400编辑于 2025-01-02
  • 来自专栏JMCui

    Tomcat 日志分割.

    一、前言    随着每天业务的增长,Tomcat 的catalina.out日志 变得越来越大,占用磁盘空间不说。要查看某个时候的日志的时候,庞大的日志让你顿时无从下手,所以日志的切割的变得刻不容缓。 而且,切割后的日志,还可以定期清理掉久远的日志...... 二、Tomcat 日志分割     我们采用日期形式切割catalina.out 日志,因此采用cronlog 软件切割: 1、安装 cronlog  yum install -y cronolog httpd 改为: if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT="$CATALINA_BASE"/logs/%Y-%m-%d.catalina.out fi (2) 三、定时清理日志     想要写一个Shell脚本,定期清理掉久远的日志文件 ,避免磁盘不断被占用。

    1.5K60发布于 2018-03-15
  • 来自专栏数据库相关

    nginx日志切割的2种方法

    nginx泡得太久,日志就越来越大,有必要对其切割下,也便于按天统计访问量神马的。 没啥难度,短短几行的脚本即可 #! ="/home/wwwlogs" WWW_LOG_NAME="www.demo.com.log" B2B_LOG_NAME="b2b.demo.com.log" MOBILE_LOG_NAME="mobile.demo.com.log /logs/nginx.pid`     endscript } 保存退出即可每天自动切割日志。 程序执行的情况 答:/usr/sbin/logrotate -d /etc/logrotate.d/nginx 2.怎么查看log文件的具体执行情况 答:cat /var/lib/logrotate/status 使用-s指定状态文件 4.分割日志时报错:error: skipping "/var/log/nginx/test.access.log" because parent directory has insecure

    19.5K64发布于 2019-09-18
  • 来自专栏青年码农

    浅析pm2日志管理及使用pm2-logrotate进行日志分割

    点击上方“青年码农”关注 回复“特效源码”可获取各种资料 首先我们看看 pm2 的自带日志管理功能,pm2日志模块默认是每一个服务进程都分配两个默认的日志文件,这两个日志文件存放于/root/.pm2 但是pm2自带的日志功能是不支持自动分割的,这就会导致随之时间的推移,我们的日志文件会越来越大,不但会影响性能,在后期排查问题的时候也会很麻烦,这时我们就可以使用pm2-logrotate插件来解决上面的问题 安装也是非常简单 安装完成后就可以通过pm2 list命令查看模块列表了 通过 pm2 conf pm2-logratate 可以查看详细的配置 pm2-logrotate 具体配置说明: 比如我们可以设置日志文件大小为 1KB 修改完不要忘记重启服务 当大小达到1KB就会自动分割,格式如:main-out__2022-07-29_11-00-32.log 的文件。 pm2日志文件储存在 /root/.pm2/logs 文件夹下。 logs目录下还有其他日志文件。这样后面在查看日志就比较方便了。

    5.4K1510编辑于 2022-08-19
  • 来自专栏后端技术探索

    nginx日志

    1.2 Nginx日志格式 打开nginx.conf配置文件:vim /usr/local/nginx/conf/nginx.conf 日志部分内容: #access_log logs/access.log 1.3 Nginx自定义日志 打开nginx.conf配置文件去掉#注释见下图: ? 自定义某一个server配置的日志,使用“main”日志格式。 ? 1.4 Nginx日志分隔 nginx日志文件没有rotate功能。编写每天生成一个日志,我们可以写一个nginx日志切割脚本来自动切割日志文件。 第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,Linux是靠文件描述符而不是文件名定位文件。 第二步向nginx主进程发送USR1信号。nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。

    1.2K40发布于 2018-08-10
  • 来自专栏技术人生

    nginx日志文件管理【nginx

    一,配置nginx服务器的日志路径 1,编辑conf文件 vim /etc/nginx/nginx.conf , 不同服务可能路径有所不同 #access_log logs/access.log main; 日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。 2,自定义日志路径 access_log /var/log/nginx/edu.moxiu.net.access.log main; error_log /var/log/nginx/edu.moxiu.net.error.log ; 3,有时候nginx日志会使用vhosts目录进行配置 nginx引入vhosts目录 如何引入: 在nginx.conf文件中http括号内增加 include vhosts/*.conf; 创建 ,include vhosts/inc/base.conf; 规范化,结构化 二,分析nginx日志 1,tail -f access.log 实时监测日志 2,cat access.log 打印列出日志信息

    6.2K41发布于 2020-11-13
  • 来自专栏技术博文

    nginx 日志切割

    1.nginx_log_rotate.sh文件 #nginx日志切割脚本 #author: joshau317 #! /bin/bash #1.设置日志文件存放目录,假设你的nginx日志存在这个目录里 logs_path="/data/logs/nginx/" #2.设置pid文件,这个根据你自己的环境,找到nginx.pid 所在目录 pid_path="/usr/local/nginx/logs/nginx.pid" #3.创建分割存储的日期文件目录 datetime=`date -d "yesterday" +"%Y% m%d"`; new_log_path=$logs_path$datetime mkdir -p $new_log_path #4.按照日期移动所有该目录下的日志文件 log_file_list=`ls 主进程发信号重新打开日志 kill -USR1 `cat ${pid_path}` 2.设置定时任务 0 0 * * * /data/sh/nginx_log_rotate.sh

    1.9K50发布于 2018-04-16
  • 来自专栏技术博文

    Nginx 日志分享

    Nginx 日志对于大部分人来说是个未被发掘的宝藏,总结之前做某日志分析系统的经验,和大家分享一下 Nginx 日志的纯手工分析方式。 Nginx 日志相关配置有 2 个地方:access_log 和 log_format 。 $body_bytes_sent ' '"$request" "$http_referer" "$http_user_agent"'; 相信大部分用过 Nginx 的人对默认 Nginx 日志格式配置都很熟悉 +a 打出)分割每个字段。 link:http://blog.eood.cn/nginx_logs 想起很早之前zone有人问过nginx日志分析,正好今天看到这篇文章,自己实践了下,觉得不错,分享下:)

    1.1K50发布于 2018-04-16
  • 来自专栏Linux学习日志

    Nginx 日志切割

    手动切割 --进入日志目录 cd /usr/local/nginx/logs/ --重命名日志文件 [root@host1 logs]# mv access{,. ,执行重命名日志文件命令后,日志目录中自动生成了一个新的'access.log'文件 /usr/local/nginx/sbin/nginx -s reopen 重命名日志文件后,'nginx'日志仍然会写入到 所以,重命名后,我们需要让nginx重新打开一个新文件,以便将新的日志写入到新文件中 编写脚本 --编写脚本实现日志切割,可以配合'crontab'计划任务 [root@host1 /]# vim / postrotate 将日志文件转储后执行的命令,以endscript结尾,命令需要单独成行 endscript 重启nginx日志服务,写入到新的文件中去,否则会依然写入重命名后的文件中 '信号是为了告诉'nginx'进程重新打开日志文件

    1.8K10发布于 2021-01-14
  • 来自专栏用户8644135的专栏

    Nginx 日志切割

    但是自己要实现这一套逻辑还是满繁琐的,所以初步还是考虑用 Nginx 的一些功能来代替,其中流量统计就考虑使用 Nginx 自带的日志来分析。 考虑到日后日志大小过大,NodeJs读取会花太多时间,所以是要按天来切割日志,刚开始我写了一个简单的脚本。利用 crontab 的定时功能。 先按日期重命名文件,然后新建一个同名的日志文件让 Nginx 来写入,实际测试发现新建的 log 并没有被写入。 但是 Nginx reload 却可以,最终网上找到了 killall -s USR1 nginx 这条命令来通知 Nginx 重新创建新的日志 #! /"${target} killall -s USR1 nginx #touch $log

    1.2K50发布于 2021-06-28
  • 来自专栏小黑博客

    NGINX日志切割

    前言 Nginx日志对于统计、系统服务排错很有用。 Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。 测试按分钟分割 编写脚本 vim logaccess.sh #! -e #每分钟进行日志切割 */1 * * * * sh /root/logaccess.sh > /dev/null 2>&1 按日切割: vim log2.sh #! ${LOG_BAK}.log #向nginx主进程发信号重新打开日志 kill -USR1 `cat /run/nginx.pid` 设置定时任务 crontab -e #每天23:59分开始执行 59 23 * * * sh /root/logaccess.sh > /dev/null 2>&1

    1.3K30编辑于 2022-12-28
  • 来自专栏devops探索

    nginx日志切割

    背景 nginx日志默认是不会自动切割的,所以日志体积会越来越大,因此有必要对日志进行切割 nginx日志切割实现方式 脚本切割 logrotate 脚本切割 1 2 3 4 5 6 7 /run/nginx.pid) LOG_NAME=novel2_https.log LOG_ERR_NAME=novel2_https_err.log #按天切割 test -d ${LOGS_PATH fi fi 添加到计划任务里: 1 2 3 4 #切nginx日志(错误日志和访问日志) 01 00 * * * root cd /devilf/script;sh cut_ngx_log.sh 4096 Feb 25 00:01 2018-02-24 #按照天进行分割,每天一个目录,每个目录里有访问日志和错误日志 drwxr-xr-x 2 root root 4096 调试 (d = debug)参数为配置文件,不指定则执行全局配置文件 logrotate -d /etc/logrotate.d/nginx.conf 2.

    1.1K50发布于 2020-07-31
领券