fei/logger-client
Composer 安装命令:
composer require fei/logger-client
包简介
Client side logger
README 文档
README
Installation
Just add the following requirement to your composer.json file:
"fei/logger-client": "^1.2.0"
Configuration
The logger client needs some options to work properly. The available options that can be passed to the __construct() or setOptions() methods are :
| Option | Description | Type | Possible Values | Default |
|---|---|---|---|---|
| OPTION_BASEURL | This is the server to which send the requests. | string | Any URL, including protocol but excluding path | -- |
| OPTION_FILTER | Minimum notification level required for notifications to be actually sent. | int | Any Notification::LVL_* constant | Notification::LVL_ERROR |
| OPTION_BACKTRACE | Should backtrace be added to notifications before they are sent. | bool | true / false | true |
| OPTION_LOGFILE | File path and name where the Logger will store its own exceptions. | string | Any writeable file path | /tmp/logger.log |
| OPTION_HEADER_AUTHORIZATION | Api Key for authentification | string | Any string value | '' |
Notes: Logger is an alias of Fei\Service\Logger\Client\Logger Notification is an alias of Fei\Service\Logger\Entity\Notification
Usage
Initialization
A Logger client should always be initialized by a dependency injection component, since it requires at least one dependency, which is the transport. Moreover, the BASEURL parameter should also depends on environment.
// sample configuration for production environment $logger = new Logger(array( Logger::OPTION_BASEURL => 'http://logger.flash-global.net', Logger::OPTION_FILTER => Notification::LVL_DEBUG, ) ); // inject transport classes $logger->setTransport(new BasicTransport()); // optionnal asynchronous transport, that will be automatically used to push notifications // // NOTE this transport requires a beanstalk queue able to listen to its requests $pheanstalk = new Pheanstalk('localhost'); $asyncTransport = new BeanstalkProxyTransport; $asyncTransport->setPheanstalk($pheanstalk); $logger->setAsyncTransport($asyncTransport);
Pushing a simple notification
Once you have set up the Logger, you can start pushing notifications by calling the notify() method on the Logger:
$logger = $container->get('logger'); $logger->notify('Notification message'); // default level is Notification::LVL_INFO $logger->notify('Debug message', array('level' => Notification::LVL_DEBUG));
While its possible to pass more than just the level using the second (array) parameter, it is recommended not to do so. If you want to pass more informations, like a context, please take a look at the following section.
Pushing a Notification instance
The more reliable way to push a notification is to instantiate it by yourself, and then send it through notify(), that will also accept Notification instances:
$logger = $container->get('logger'); $notification = new Notification(array('message' => 'Notification message')); $notification ->setLevel(Notification::LVL_WARNING) ->setContext(array('key' => 'value') ; $logger->notify($notification);
PSR-3 Adapter
PSR-3 describe an interface for logging purpose to ensure interoperability between systems.
For this end we provide the adapter Fei\Service\Logger\Client\Psr\PsrLoggerAdapter.
<?php use Fei\Service\Logger\Client\Logger; use Fei\Service\Logger\Client\Psr\PsrLoggerAdapter; $logger = new Logger(); $psr = new PsrLoggerAdapter($logger); $psr->error('This is a error message');
It's always possible to set category, namespace and other notification properties with log context:
<?php use Fei\Service\Logger\Client\Logger; use Fei\Service\Logger\Client\Psr\PsrLoggerAdapter; use Fei\Service\Logger\Entity\Notification; $logger = new Logger(); $psr = new PsrLoggerAdapter($logger); $psr->error( 'This is a error message', [ 'namespace' => '/my/app', 'category' => Notification::TRACKING, 'key1' => 'value1', 'key2' => 'value2' ] );
Manageable Notification properties are flag, namespace, user, server, command, origin, category and env.
Another key of context will be set in Notification context.
统计信息
- 总下载量: 24.91k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: GPL-3.0
- 更新时间: 2018-03-14