我在Laravel中设置了这样的日志记录:
'default' => env('LOG_CHANNEL', 'stack'),
'stack' => [
'driver' => 'stack',
'channels' => ['daily'],
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14,
'permission' => 0666,
],
这将为storage/logs
中的每一天创建日志。
现在,我要做的是将计划任务中的日志消息仅发送到单独的日志目录中。例如,以storage/logs/cron
。但是我想将其他消息保留在当前设置中。
我如何做到这一点?我尝试在config中创建一个新频道,但它仍将消息记录在同一文件中。
答案 0 :(得分:0)
您可以在config/logging.php
中创建一个新频道。即:
'cronjob' => [
'driver' => 'single',
'path' => storage_path('logs/cronjob.log'),
'level' => 'debug',
],
然后您可以在您的命令(或任何地方)中使用它,并添加channel
方法:
Log::channel('cronjob')->info('Command started. ');
如果要记录异常,请使用try/catch
:
try {
// ...
} catch (\Exception $exception) {
Log::channel('cronjob')->error($exception);
}