Nginx log 日志文件较大,按日期生成 实现日志的切割

nginx,log,日志,文件,较大,日期,生成,实现,切割 · 浏览次数 : 1796

小编点评

**方法 1:按天对 Nginx日志进行分割** ```bash map $time_iso8601 $logdate { ~^(?<ymd>\\d{4}-\\d{2}-\\d{2}) $ymd; default 'date-not-found'; } access_log logs/access-$logdate.log ; ``` **方法 2:文件切割** ```bash # 首先备份日志文件 cp /usr/local/nginx/logs/nginx.pid /usr/local/nginx/logs/nginx.pid.bak # 切割日志文件并压缩 tar -jcvf /usr/local/nginx/logs/nginx.tar.gz /usr/local/nginx/logs/bak/access_$date.log \ /usr/local/nginx/logs/bak/error_$date.log # 移除旧日志文件 rm -rf /usr/local/nginx/logs/bak -mtime +30 -name \"*.gz\" -exec rm -rf {} \; rm -rf /usr/local/nginx/logs/bak -mtime +1 -name \"*.log\" -exec rm -rf {} \; # 重新加载 Nginx 配置 nginx -s reload ``` **注意事项:** * 将 `log_format` 设置为您需要的格式,例如 `access-upstream `。 * 确保日志文件具有可写的权限。 * 将切割脚本的日期格式根据您的需求调整。

正文

Nginx日志不处理的话,会一直追加,文件会变得很大,所以理想做法是按天对 Nginx日志进行分割
image
image
image

方法1:给日志文件名加上日期 推荐

log_format access-upstream '$time_iso8601|$request|$remote_addr|$upstream_response_time|$http_user_agent|$http_x_forwarded_for';
    map $time_iso8601 $logdate {
    '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
    default                       'date-not-found';
}
access_log logs/access-$logdate.log ;
# access_log off; # 实在不需要的话,可以将其关闭(如心跳请求,会记录日志)

重新加载配置文件

# 验证文件配置是否正确
nginx -t
# 重新加载配置文件
nginx -s reload

# 观察,如果不生效,就把进程杀掉再打开

如下图所示
img

方法2:文件切割(网上好多用的这种方法--不推荐)

会 kill 进程,影响服务使用

Linux

nginx_log.sh

#!/bin/bash
date=$(date +%F -d -1day)
cd  /usr/local/nginx/logs
if [ ! -d bak ] ; then
        mkdir -p bak
fi
mv access.log bak/access_$date.log 
mv error.log bak/error_$date.log        
# /usr/bin/nginx -s reload       
kill -s SIGUSR1 $(cat /usr/local/nginx/logs/nginx.pid)
tar -jcvf bak/$date.tar.gz bak/access_$date.log bak/error_$date.log
find /usr/local/nginx/logs/bak -mtime +30 -name "*.gz" -exec rm -rf {} \;
find /usr/local/nginx/logs/bak -mtime +1 -name "*.log" -exec rm -rf {} \;

添加到定时任务

crontab -e #打开定时任务

i #进入编辑模式
0 1 * * * /bin/sh /opt/shell/nginx_log.sh #添加任务
:wq! #保存退出

如果报错:
tar (child): bzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now

yum -y install bzip2

img

Windows

taskkill /F /IM nginx.exe > nul
rem date格式:Wed 11/02/2016
set today=%date:~0,4%-%date:~5,2%-%date:~8,2%
set dir=D:\nginx-1.20.1\logs\backup
md "%dir%"

rem access log 
move "D:\nginx-1.20.1\logs\access.log" "%dir%\access-%today%.log"

start "D:\nginx-1.20.1\nginx.exe"

与Nginx log 日志文件较大,按日期生成 实现日志的切割相似的内容:

Nginx log 日志文件较大,按日期生成 实现日志的切割

Nginx日志不处理的话,会一直追加,文件会变得很大,所以理想做法是按天对 Nginx日志进行分割 ![image](https://img2023.cnblogs.com/blog/80824/202302/80824-20230206130157552-1210811098.png) ![ima

[转帖]Centos7 nginx访问日志文件割接

一、yum安装nginx 二、各文件路径( /etc/nginx/nginx.conf) 1、访问日志路径:access_log /var/log/nginx/access.log main; 2、pid路径:pid /run/nginx.pid 三、脚本 1、创建脚本 [root@localhos

nginx日志定期备份清理的方法

nginx日志定期备份清理的方法 前言 实在不想动不动就 yum install 也不太想因为一个很小的需求就搞一下ansible. 想着能够尽量简单, 尽量方便的进行一些工作. 具体思路就是 压缩,备份. 删除过旧的文件. 保证磁盘的正常可用. 具体脚本 vim /deploy/nginxlog

自用小技巧

实时查看日志tail -f cdx-api-1.0.log 随机查询三条数据ORDER BY rand() LIMIT 3 查询创建字段时间大于30分钟的数据TIMESTAMPDIFF( MINUTE, create_time, NOW( ) ) > 30 nginx配置ssl证书http://t.

[转帖]查看请求在nginx中消耗的时间

需求:查看请求在nginx中消耗的时间,不包括程序响应时间。 1.声明日志的格式,在nginx配置文件nginx.conf里的http下添加如下内容: log_format test '$remote_addr - $remote_user [$time_local] "$request" ' '$

[转帖]prometheus监控nginxt的两种方法(vts)

方法一 使用nginx_ vts_exporter mkdir -p /data/nginx/{log,conf/conf.d} cat > /data/nginx/conf/nginx.conf << 'EOF' user root; worker_processes auto; error_lo

Nginx配置以及热升级

目录Nginx详解1. Nginx关键特性2. Nginx配置2.1 event2.2 http2.2.1 log_format2.2.2 sendfile2.2.3 tcp_nopush2.2.4 tcp_nodelay2.2.5 keepalive_timeout2.2.6 include2.2

[转帖]Nginx 性能测试

https://plantegg.github.io/2022/10/10/Nginx%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/ 压测工具选择 wrk ,apache ab压nginx单核没问题,多核的话 ab 自己先到瓶颈。另外默认关闭 access.log 避免

一个斜杠引发的CDN资源回源请求量飙升

背景 一个安静的晚上,突然接到小伙伴电话线上CDN回源异常,具体表现为请求量飙升,且伴有少量请求404,其中回源请求量飙升已经持续两天但一直未被发现,直到最近404请求触发了告警后分析log才同时发现回源量飙升这一问题。 触发问题的原因很快被发现并修复上线,这里分享一下跟进过程中进一步学习到的CDN

中间件-Nginx

一、nginx反向代理 输入 http://xxx.com/plat/login 跳转: http://localhost:8383/plat/login 将某个指定的域名代理到指定的服务 http://xxx.com 转 http://localhost:8383 1.修改hosts文件 C:\W