fei / logger-client
Client side logger
Installs: 24 850
Dependents: 3
Suggesters: 0
Security: 0
Stars: 0
Watchers: 27
Forks: 0
Open Issues: 0
Requires
- php: ^7.0
- fei/api-client: ^1.5.1
- fei/logger-common: ^1.2.3
- psr/log: ^1.1.2
Requires (Dev)
- codeception/codeception: ^2.2
- fzaninotto/faker: ^1.6
- squizlabs/php_codesniffer: 3.*
- dev-master
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.0
- v1.2.12
- v1.2.11
- v1.2.10
- v1.2.9
- v1.2.8
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.14
- v1.1.13
- v1.1.12
- v1.1.11
- v1.1.10
- v1.1.9
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-detached
- dev-detached2
This package is auto-updated.
Last update: 2024-12-20 09:41:34 UTC
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 :
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.