ThinkPHP5.1.41日志需精准控制而非仅开启:可修改log.php中path指定存储路径、level设置级别(如['error','notice'])、type切换输出方式;CRUD日志需手动集成,在基类模型重写方法并调用Log::info;验证需实测写入并检查权限。

ThinkPHP5.1.41安装完成后,日志配置默认已启用,但需按需调整位置、级别和格式才能满足实际运维或审计需求。关键不是“开启”,而是“精准控制”——比如只记录增删改查操作、排除调试信息、或把日志写入指定目录而非默认的runtime/log。
修改日志存储路径和文件名
默认日志存放在runtime/log/下,按日期生成子目录(如202609/)。若需统一归档或对接日志采集工具:
- 编辑
config/log.php,修改'path'项,例如:'path' => '/var/log/thinkphp/',(Linux)或'path' => 'D:/logs/thinkphp/',(Windows) - 确保该目录存在且Web服务器进程(如www-data、IIS_IUSRS)有写权限
- 可配合
'file' => 'app_' . date('Ym') . '.log'实现按月归档
设置日志级别与过滤条件
框架支持DEBUG、INFO、NOTICE、ERROR四级。生产环境建议关闭DEBUG,避免敏感数据泄露:
- 在
log.php中设置:'level' => ['error', 'notice'], - 若仅记录数据库操作日志,可在模型中调用
think\Log::record()手动写入,不依赖全局级别 - 通过
'type' => 'File'(默认)或'type' => 'Socket'切换输出方式,后者适合接入ELK
自定义CRUD操作日志(非默认行为)
框架本身不自动记录增删改查,需手动集成。推荐在基类模型中统一处理:
立即学习“PHP免费学习笔记(深入)”;
- 创建
app/common/model/Base.php,继承think\Model - 重写
save()、delete()等方法,在内部调用Log::info("User {$this->id} updated table {$this->name}") - 利用
config('crud_log')开关控制是否启用,避免影响性能
验证配置是否生效
别只看配置文件改了没,要实测:
- 在控制器中加一行:
\think\Log::error('test log entry'); - 访问对应接口,检查目标日志文件是否有新内容
- 若无输出,检查
runtime/目录权限,或临时将'close' => false设为false禁用日志关闭机制



















