关于优化项目日志存储、清理runtime/log冗余文件

    近期部分项目反馈,项目运行过程中/runtime/log目录会持续生成大量日志文件,占用服务器存储空间,甚至影响目录读写效率,同时冗余日志堆积也不利于后续问题排查和服务器维护。为解决该问题,现对项目默认日志配置进行优化,实现日志自动清理、减少冗余生成,具体修改方案及操作指引如下。

    一、问题说明

    项目默认日志配置未限制日志文件留存数量,且日志记录级别默认全开,项目运行期间会持续按日期/请求生成各类日志文件,长期堆积后导致/runtime/log文件夹文件数量过多、占用磁盘空间,手动清理繁琐且易遗漏。

    本次优化无需改动核心代码,仅需修改项目日志配置文件,即可实现自动清理过期日志、精简日志内容,彻底解决日志冗余堆积问题。

    二、配置文件位置

    本次修改针对项目根目录下的日志配置文件,具体路径为:

    config/log.php

    该文件为项目默认日志配置文件,所有日志生成规则、存储路径、清理机制均在此文件中定义。

    三、核心修改内容(精准替换)

    1.原配置内容(需全部替换)

    打开config/log.php文件,原有默认配置如下,请将以下整块代码完全替换:

<?php
// +----------------------------------------------------------------------
// | 日志设置
// +----------------------------------------------------------------------
return [
    'type'        => 'File',
    'path'        => '',
    'level'       => ['critical', 'emergency', 'alert'],
    'single'      => false,
    'apart_level' => [],
    'max_files'   => 30,
    'close'       => false,
];

旧版自行备份,源文件如下:

<?php

// +----------------------------------------------------------------------
// | 日志设置
// +----------------------------------------------------------------------
return [
    // 日志记录方式,内置 file socket 支持扩展
    'type'        => 'File',
    // 日志保存目录
    'path'        => '',
    // 日志记录级别
    'level'       => [],
    // 单文件日志写入
    'single'      => false,
    // 独立日志级别
    'apart_level' => [],
    // 最大日志文件数量
    'max_files'   => 0,
    // 是否关闭日志写入
    'close'       => false,
];

   四、优化后核心效果

    •自动清理冗余:系统自动保留最近30天的有效日志,超过时长的日志文件自动删除,无需手动定期清理

    •减少日志生成:调整日志记录级别,仅保留错误信息、SQL执行记录、关键通知,屏蔽无用调试日志,大幅降低日志文件生成数量

    •不影响业务运行:优化仅针对日志存储规则,不涉及项目业务逻辑、数据库操作,修改后即刻生效,无任何兼容性问题

    •节省服务器空间:彻底解决/runtime/log目录文件堆积问题,释放服务器磁盘存储空间

    五、配套操作:一键清理现有冗余日志

    配置修改完成后,建议执行一键清理命令,删除/runtime/log目录文件即可