整了个 Laravel 的多频道日志 ChannelLog 组件

日常开发经常在许多子模块中需要调试、记录一些具体业务的日志信息,又不想放入整个项目的日志流水中去。总是用Storage的disk方法感觉还是不够优雅,file_put_contents加FILE_APPEND,每次定制格式都巨麻烦。

网上搜索了一下找了一圈有一个还比较凑合的方案,改吧改吧就整了这个组件:

https://github.com/nickfan/ChannelLog

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 协议》,转载必须注明作者和本文链接
nickfan
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1
nickfan

另外其实也参考过其他的组件

比如官方的 theorchard/monolog-cascade 相较而言,monolog-cascade功能强大但配置对于一般日常的小模块开发而言有点冗余。

所以就写一个比较山寨的配置器的思路,如果需要可以自己在配置器流程和配置文件中自行扩展。

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!