Laravel 有預設的 Logger,可以透過 logging config 設定,滿足大部分情況的需求。
不過有些時候難免還是會需要動態的使用 logger,尤其是需要動態產生 logger 的寫入路徑,這個時候就需要用別的方式了。
Laravel 的 Log 提供一個 build 的方法,讓開發者可以自己定義 logger,如果要建立一個動態的 logger,並寫入指定路徑,可以參考以下範例:
use Illuminate\Support\Facades\Log;
$path = '...';
$logger = Log::build([
'driver' => 'single',
'path' => $path
]);
在上面的範例中, driver
使用 single
,single
代表使用單一檔案,可搭配 path
使用。$path
可以是任意路徑,根據實際需求來即時計算產生。
例如:
// 根據目前日期
$path = storage_path('logs/test_'.date('Ymd').'.log'),
// 根據使用者id
$path = storage_path('logs/test_'.$request->user()->id.'.log'),/
那這樣產生的 logger 其實用法就跟一般的 logger 一樣,直接呼叫就好了:
$logger->info("Info Logger!");
$logger->warn("Warn Logger!");
沒意外的話,應該可以在 path
指定的路經中找到 log。