Nginx日志切分

nginx日志如果不切分,会导致access.log一直很大,如果开启了debug 输出request_body日志会刷的特别快,很可能很快达到几十个G,配置低的服务器可能磁盘就100%了,接口504 game over了,所以对于nginx的access和error日志都需要做每天的日志切分,对于历史日志做定期清理。
(1)在/etc/logrotate.d目录下增加nginx配置文件

cd /ec/logrotate.d

vim nginx

添加如下内容:

bash 复制代码
#具体nginx日志路径依项目而定
/usr/local/nginx/nginx-1.16.1/logs/*.log {
        daily  # 轮转频率:每天
        missingok   # 如果日志不存在,不报错
        rotate 14   # 保留14个旧日志文件
        compress  # 压缩旧日志(gzip)
        delaycompress  # 延迟压缩(下一个周期压缩)
        notifempty  # 空日志不轮转
        create 646 nginx adm  # 创建新日志的权限和所有者
        sharedscripts  # 所有日志处理完再执行脚本
        postrotate
        nginx -s reload  #重启nginx
        endscript
}

/etc/logrotate.d/ 是 Linux 系统中管理日志轮转的核心目录。

  • 位置 :/etc/logrotate.d/ 是 logrotate 服务的配置目录

  • 主配置 :/etc/logrotate.conf 是全局配置文件

  • 子配置 :/etc/logrotate.d/ 包含各个应用程序的独立配置文件

  • 用途:自动管理日志文件,防止日志过大占满磁盘

1. 轮转频率

bash

复制代码
daily         # 每天轮转
weekly        # 每周轮转
monthly       # 每月轮转
size 100M     # 大小达到100M时轮转

2. 保留策略

bash

复制代码
rotate 7      # 保留7个旧日志文件
maxage 30     # 删除超过30天的日志
maxsize 100M  # 单个日志最大100M

3. 压缩设置

bash

复制代码
compress              # 使用gzip压缩
nocompress            # 不压缩
compresscmd /bin/bzip2 # 指定压缩工具
compressext .bz2      # 指定扩展名
delaycompress         # 延迟一个周期压缩

4. 文件处理

bash

复制代码
create 0640 user group  # 创建新日志的权限
copytruncate            # 复制后清空(不需要重启服务)
nocreate                # 不创建新日志
dateext                 # 使用日期作为后缀
dateformat .%Y%m%d      # 日期格式

5. 脚本钩子

bash

复制代码
prerotate
    # 轮转前执行的命令
endscript

postrotate
    # 轮转后执行的命令(如重启服务)
endscript

firstaction
    # 第一次轮转时执行
endscript

(2)添加定期清理日志的crontab定时任务

crontab -e 编辑定时任务,添加如下命令

bash 复制代码
0  1 * * * /usr/bin/find /usr/local/nginx/nginx-1.16.1/logs/ -name "*.gz" -mtime +5  | xargs -i /usr/bin/rm -irf {}
相关推荐
风骏时光牛马44 分钟前
AI稳定性治理体系构建与疑难问题深度分析
前端
IT_陈寒1 小时前
JavaScript的this坑人实录,这次我真的记下来了
前端·人工智能·后端
Lsetea2 小时前
Certbot webroot申请SSL证书总是404:Nginx挑战目录与路径映射检查
运维·nginx·https·ssl证书·certbot
开开心心就好2 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
一枕槐安4873 小时前
大模型限流、重试、超时处理:API 调用健壮性方案
linux·服务器·php·大模型api·指数退避·限流控制·超时预算
黑十3 小时前
PyTorch 报 “no CUDA GPUs are available“ 怎么办?3 步排查
服务器·网络·人工智能·pytorch·python
Ruiery4 小时前
Linux 6.6内核并发与同步(五):mutex 可睡眠锁
linux·运维·服务器
PedroQue994 小时前
0.8.2 新增 backFallback 配置,无 tabbar 页返回无忧
前端·uni-app
淡漠的蓝精灵4 小时前
web.py:一个简单到极致的 Python Web 框架
开发语言·前端·python·其他
莫晓燚4 小时前
双机部署若依 (RuoYi‑Vue) 传统环境部署---实战
linux·运维·数据库·redis·mysql·nginx·ruoyi