Laravel 5.6自定义日志通道无法写入指定文件问题
解决Laravel 5.6自定义日志通道无法写入的问题
嘿,我来帮你搞定这个日志写入的问题!你的配置里有几个关键问题,咱们一步步来修正:
1. 日志驱动配置错误
Laravel 5.6 并没有名为 auth 的内置日志驱动,你把通道的 driver 设成了 auth,这是导致日志无法写入的核心原因。你需要使用官方支持的驱动,比如 single(单文件日志)或者 daily(按日期拆分日志)。
2. 修正 config/logging.php 配置
把你的 auth 通道配置改成下面这样,同时确保 days 参数完整(你原来的配置里 days... 是不完整的,如果用 daily 驱动需要指定保留天数):
'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['single', 'auth'], ], 'auth' => [ 'driver' => 'single', // 这里改成single或者daily 'path' => storage_path('logs/auth/register.log'), 'level' => 'debug', // 如果用daily驱动,加上下面这行 // 'days' => 14, ], // ...其他默认通道 ]
3. 确保目标目录存在
Laravel 不会自动创建日志文件的父目录,所以你需要手动创建 storage/logs/auth 文件夹:
mkdir -p storage/logs/auth
4. 验证目录权限
确保 storage 目录及子目录有正确的读写权限,避免因为权限问题无法写入日志:
chmod -R 755 storage # 或者根据你的服务器环境,设置正确的用户组 # chown -R www-data:www-data storage
5. 使用自定义通道记录日志
配置完成后,你需要明确指定使用 auth 通道来记录日志,比如在注册逻辑里:
use Illuminate\Support\Facades\Log; // 记录注册相关日志 Log::channel('auth')->info('新用户注册成功', ['user_id' => $user->id]);
如果想让默认日志都走这个通道,可以修改 .env 文件里的 LOG_CHANNEL:
LOG_CHANNEL=auth
做完这些步骤后,再触发注册逻辑,应该就能在 storage/logs/auth/register.log 里看到日志内容啦!
内容的提问来源于stack exchange,提问作者Vladimir Marton
相关产品推荐
相关产品推荐

