国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

logger 日志統(tǒng)籌化管理插件

dev-2.0.1-bk 版本
2024-08-07 版本更新時間
1400 安裝
7 star

為了后期更好的維護,最新 2.0 版本已修改包名,請注意切換

webman-tech/logger

webman log 統(tǒng)籌化管理插件

簡介

webman 支持原始的 monolog 配置形式,配置靈活,但是從以下情況來看不是特別便利:

  1. 當日志特別多,不可能所有日志都通過 Log::info 的形式去記錄,肯定是需要分 channel 的
  2. 當 channel 特別多的時候:每個都要去單獨定義,但基本都是復制粘貼的,當后期切換所有通道寫入渠道時,需要逐一修改,不太好維護
  3. 每次通過 Log::channel('channelName') 的形式去調(diào)用,因為 channelName 是字符串,萬一單詞拼錯,會導致日志記錄不到
  4. 沒有很好的利用好 monolog 的 formatter 和 processor

此插件即為了解決以上問題,針對多 channel 模式進行統(tǒng)籌優(yōu)化管理

安裝

composer require webman-tech/logger

配置

  1. 主要的配置文件位于:config/plugin/webman-tech/logger/log-channel.php,按需調(diào)整,后文詳細對其中部分配置做說明

  2. (建議)自定義一個 Logger 類繼承 WebmanTech\Logger\Logger,比如 support\facade\Logger,便于后期擴展和使用

  3. (必須)在 config/log.php 中合并原來的配置和 Logger::getLogChannelConfigs(),例如:

use support\facade\Logger;

return array_merge(
    [
        'default' => [
            'handlers' => [
                [
                    'class' => Monolog\Handler\RotatingFileHandler::class,
                    'constructor' => [
                        runtime_path() . '/logs/webman.log',
                        7, //$maxFiles
                        Monolog\Logger::DEBUG,
                    ],
                    'formatter' => [
                        'class' => Monolog\Formatter\LineFormatter::class,
                        'constructor' => [null, 'Y-m-d H:i:s', true],
                    ],
                ]
            ],
        ],
    ],
    Logger::getLogChannelConfigs(), // merge 這個
);
  1. 新增一個日志 channel,執(zhí)行以下兩步操作:

    1. (必須)在 config/plugin/webman-tech/logger/log-channel.phpchannels 中添加日志 channel 的名字,建議小駝峰命名,例如 purchaseOrder
    2. (建議)在 support\facade\Logger 的類上方添加注釋:@method static void purchaseOrder($msg, string $type = 'info', array $context = [])

步驟2是為了代碼提示,后期記錄日志可以直接使用 support\facade\Logger::purchaseOrder('xxx') 的形式,
如果未定義該類,一樣可以使用 support\Log::channel('purchaseOrder')->info('xxx') 的方式去記錄日志

后期新增其他 channel,只需要重復4即可

使用

假設已經(jīng)在 config/plugin/webman-tech/logger/log-channel.phpchannels 中配置了兩個 channels: app 和 sql,建議有如下 Logger 類:

<?php

namespace support\facade;

/**
 * @method static void app($msg, string $type = 'info', array $context = [])
 * @method static void sql($msg, string $type = 'info', array $context = [])
 */
class Logger extends \WebmanTech\Logger\Logger
{
}

記錄日志

use support\facade\Logger;

Logger::app('xxx'); // 記錄 xxx 到 app channel
Logger::app(['x' => 'y']); // 支持數(shù)組寫入,寫入日志時會轉(zhuǎn)成 json
Logger::app($exception); // 支持 Exception 寫入,寫入時會記錄詳細的 trace
Logger::app('xxx', 'error'); // 切換 level
Logger::app('hello: {name}', 'info', ['name' => 'Kriss']); // 使用 PsrLogMessageProcessor 處理,會記錄成 "hello Kriss"

模式(Mode)介紹

模式基本等同于 monolog 的 Handler,基本來說就是 Handler 的二次封裝,多個模式可以同時啟用,以下時已有的模式介紹

SplitMode

不同的channel分別會被記錄到不同的目錄下,目錄名和文件名均為 channel 同名,如:

  • runtime
    • logs
    • app
      • app-2022-05-28.log
      • app-2022-05-29.log
    • sql
      • sql-2022-05-28.log
      • sql-2022-05-29.log

此模式比較適合開發(fā)和測試,按channel和日期分開日志,方便排查錯誤

MixMode

不同的channel會被記錄到同一個目錄下,目錄名和文件名均為 channelMixed(可修改),如:

  • runtime
    • logs
      • channelMixed
        • channelMixed-2022-05-28.log
        • channelMixed-2022-05-29.log

此模式比較適合將日志文件寫入到 elk 等其他集中日志管理的服務中,因為一般此種通過 agent 來收集日志的服務不太會兼容動態(tài)擴展的日志目錄

在 log 文件中如何區(qū)分 channel? 在記錄的日志中有一列是 [channelName]

StdoutMode

將所有日志輸出到控制臺

此模式適合 docker 環(huán)境

formatter 介紹

formatter 結(jié)構(gòu)化可以有效的方便日志的篩查和查看

ChannelFormatter

基本的通道格式

單行日志格式如下:

[時間][請求的唯一標識][日志級別][客戶端ip][當前登錄的用戶ID][路由path]: 日志內(nèi)容

ChannelMixedFormatter

mix mode 使用的格式,比 ChannelFormatter 多了一列 channelName

單行日志格式如下:

[時間][請求的唯一標識][channelName][日志級別][客戶端ip][當前登錄的用戶ID][路由path]: 日志內(nèi)容

贊助商