ytake/laravel-fluent-logger
Composer 安装命令:
composer require ytake/laravel-fluent-logger
包简介
fluent logger for laravel and lumen
README 文档
README
fluent logger for laravel (with Monolog handler for Fluentd )
Versions
| Framework | Library |
|---|---|
| Laravel / Lumen < v10 | ytake/laravel-fluent-logger: ^5 |
| Laravel / Lumen v10 | ytake/laravel-fluent-logger: ^6 |
| Laravel / Lumen >= v11 | ytake/laravel-fluent-logger: ^7 |
usage
Installation For Laravel
Require this package with Composer
$ composer require ytake/laravel-fluent-logger
or composer.json
"require": { "ytake/laravel-fluent-logger": "^7.0" },
Supported Auto-Discovery(^Laravel5.5)
for laravel
your config/app.php
'providers' => [ \Ytake\LaravelFluent\LogServiceProvider::class, ]
publish configure
- basic
$ php artisan vendor:publish
- use tag option
$ php artisan vendor:publish --tag=log
- use provider
$ php artisan vendor:publish --provider="Ytake\LaravelFluent\LogServiceProvider"
for Lumen
use Ytake\LaravelFluent\LumenLogServiceProvider
bootstrap/app.php
$app->register(\Ytake\LaravelFluent\LumenLogServiceProvider::class);
Lumen will use your copy of the configuration file if you copy and paste one of the files into a config directory within your project root.
cp vendor/ytake/laravel-fluent-logger/src/config/fluent.php config/
Config
edit config/fluent.php
return [ 'host' => env('FLUENTD_HOST', '127.0.0.1'), 'port' => env('FLUENTD_PORT', 24224), /** @see https://github.com/fluent/fluent-logger-php/blob/master/src/FluentLogger.php */ 'options' => [], /** @see https://github.com/fluent/fluent-logger-php/blob/master/src/PackerInterface.php */ // specified class name 'packer' => null, // optionally override Ytake\LaravelFluent\FluentHandler class to customize behaviour 'handler' => null, 'processors' => [], 'tagFormat' => '{{channel}}.{{level_name}}', ];
added config/logging.php
return [ 'channels' => [ 'stack' => [ 'driver' => 'stack', // always added fluentd log handler // 'channels' => ['single', 'fluent'], // fluentd only 'channels' => ['fluent'], ], 'fluent' => [ 'driver' => 'fluent', 'level' => 'debug', ], 'single' => [ 'driver' => 'single', 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', ], 'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', 'days' => 7, ], 'slack' => [ 'driver' => 'slack', 'url' => env('LOG_SLACK_WEBHOOK_URL'), 'username' => 'Laravel Log', 'emoji' => ':boom:', 'level' => 'critical', ], 'syslog' => [ 'driver' => 'syslog', 'level' => 'debug', ], 'errorlog' => [ 'driver' => 'errorlog', 'level' => 'debug', ], ], ];
or custom / use via
return [ 'channels' => [ 'custom' => [ 'driver' => 'custom', 'via' => \Ytake\LaravelFluent\FluentLogManager::class, ], ] ];
fluentd config sample
## match tag=local.** (for laravel log develop)
<match local.**>
type stdout
</match>
example (production)
<match production.**>
type stdout
</match>
and more
for lumen
fluentd config sample(lumen)
<match lumen.**>
type stdout
</match>
Tag format
The tag format can be configured to take variables from the LogEntry object. This will then be used to match tags in fluent.
{{channel}} will be Laravel's current environment as configured in
APP_ENV, NOT the logging channel from config/logging.php
{{level_name}} will be the uppercase string version of the log level.
{{level}} is the numeric value of the log level. Debug == 100, etc
You can also use variables that exist in LogEntry::$extra. Given a message like
$l = new \Monolog\LogRecord(extra: ['foo' => 'bar']);
You could use a tag format of myapp.{{foo}} to produce a tag of myapp.bar.
Monolog processors
You can add processors to the Monolog handlers by adding them to
the processors array within the fluent.php config.
config/fluent.php:
'processors' => [function (\Monolog\LogRecord $record) { $record->extra['cloudwatch_log_group'] = 'test_group'; return $record; }],
Alternatively, you can pass the class name of the processor. This helps keep your config compatible with config:cache
config/fluent.php:
'processors' => [CustomProcessor::class],
CustomProcessor.php:
class CustomProcessor { public function __invoke(\Monolog\LogRecord $record) { $record->extra['cloudwatch_log_group'] = 'test_group'; return $record; } }
Author
License
The code for laravel-fluent-logger is distributed under the terms of the MIT license.
ytake/laravel-fluent-logger 适用场景与选型建议
ytake/laravel-fluent-logger 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 551.37k 次下载、GitHub Stars 达 62, 最近一次更新时间为 2015 年 11 月 07 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「log」 「logging」 「fluent」 「laravel」 「lumen」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ytake/laravel-fluent-logger 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ytake/laravel-fluent-logger 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ytake/laravel-fluent-logger 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Presentation and Formatting helper with nice fluent interface.
A Zend Framework module that sets up Monolog for logging in applications.
Traits gathering fluent syntax common methods
A modern, fluent HTTP client. Forked from Mashape, reimagined by Nidux, and open-sourced for the PHP community.
Asynchronous Sentry for Symfony - Fire and forget
A fluent PHP CURL wrapper
统计信息
- 总下载量: 551.37k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 63
- 点击次数: 22
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-11-07