日常開發經常在許多子模組中需要除錯、記錄一些具體業務的日誌資訊,又不想放入整個專案的日誌流水中去。總是用Storage的disk方法感覺還是不夠優雅,file_put_contents加FILE_APPEND,每次定製格式都巨麻煩。
網上搜尋了一下找了一圈有一個還比較湊合的方案,改吧改吧就整了這個元件:
https://github.com/nickfan/ChannelLog
簡介
支援多通道(多例項)配置的Laravel 日誌元件(基於Monolog)
此專案基於 StackOverflow上的一條自定義日誌的問答
安裝
- composer 安裝元件
composer require "nickfan/channel-log:dev-master"
-
修改config/app.php配置:
providers 組中增加:
Nickfan\ChannelLog\ChannelLogServiceProvider::class,
aliases 組中增加:
'ChannelLog' => Nickfan\ChannelLog\Facades\ChannelLog::class,
-
配置檔案釋出
php artisan vendor:publish --provider="Nickfan\ChannelLog\ChannelLogServiceProvider"
配置
return [
'default' => [ // 頻道標識key
'path' => 'logs/default.log', // 日誌檔案路徑 相對路徑會儲存在storage_path中
'level' => \Monolog\Logger::DEBUG // 日誌等級
],
// 'event' => [
// 'path' => 'logs/event.log',
// 'level' => \Monolog\Logger::INFO
// ],
];
自定義配置器
單頻道配置資訊中可以根據configurator設定自定義的Logger配置器,
配置器必須實現 Nickfan\ChannelLog\ChannelLogConfigurator
介面
具體可以參考 Nickfan\ChannelLog\ChannelLogDefaultConfigurator
的預設配置器
例如:
return [
'myconsole' => [ // 頻道標識key
'path' => 'logs/default.log', // 日誌檔案路徑 相對路徑會儲存在storage_path中
'level' => \Monolog\Logger::DEBUG // 日誌等級
// 設定配置器使用的類名
'configurator' => \App\Support\ChannelLogMyConsoleConfigurator::class
],
];
用法
// 往 default 頻道寫入一條info級別的日誌
ChannelLog::channel('default')->info('my test message {mykey1}',['mykey1'=>'myval1','aaa'=>'abc']);
// 往 event 頻道寫入一條error級別的日誌
ChannelLog::channel('event')->error('my event message {mykey2}',['mykey2'=>'myval2','qqq'=>'qwe']);
其他可以參考Laravel自帶的日誌的用法或者MonoLog官方
本作品採用《CC 協議》,轉載必須註明作者和本文連結