整了個 Laravel 的多頻道日誌 ChannelLog 元件

nickfan發表於2017-04-14

日常開發經常在許多子模組中需要除錯、記錄一些具體業務的日誌資訊,又不想放入整個專案的日誌流水中去。總是用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 協議》,轉載必須註明作者和本文連結

相關文章