instapage / php-logger
A library for standardized logs & metric format, based on monolog/monolog.
Installs: 1 073
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 7
Forks: 2
Open Issues: 1
pkg:composer/instapage/php-logger
Requires
- php: >=7.3
- ext-json: *
- monolog/monolog: ^2
- psr/log: ^1
Requires (Dev)
README
A library for standardized logs & metric format, based on monolog/monolog.
Installation
Add this to require section:
"instapage/php-logger": "1.5.1"
Alternatively, you can type composer require instapage/php-logger:1.5.1.
Examples
Then add following code in your application:
<?php declare(strict_types=1); use Instapage\Logger\Factory\LoggerFactory; use Instapage\Metrics\Factory\MetricCollectorFactory; use Monolog\Logger; require_once dirname(__DIR__) . '/vendor/autoload.php'; // Preferably put these two on DI $logger = (new LoggerFactory())->create( 'my-service', Logger::DEBUG ); $metric = (new MetricCollectorFactory())->create( 'my-service.worker' ); // Simple one-liner $logger->info('User created', ['id' => 123, 'role' => 'admin']); $metric->collect('Queue size', 42); $metric->collect('Memory used by worker (MB)', 123.50);
Output
Each log is a single line. Multi-line here is only to improve readability. Notice how field names change for metric depending on the type of value provided.
{
"sChannel":"my-service",
"sType":"log",
"sMessage":"User created",
"iLevel":200,
"sLevelName":"INFO",
"oContext": {
"iId":123,
"sRole":"admin"
}
}
{
"sChannel": "my-service.worker",
"sType": "metric",
"sMetricName": "Queue size",
"iValue": 42
}
{
"sChannel": "my-service.worker",
"sType": "metric",
"sMetricName": "Memory used by worker (MB)",
"fValue": 123.5
}
How to run unit tests ?
composer test
How to run linter ?
composer lint
# to automatically fix some of the most common errors
composer lint:fix
Docker fan ?
You can also use following docker commands to try the package out:
docker compose -f docker/docker-compose.yml up lintdocker compose -f docker/docker-compose.yml up lint:fixdocker compose -f docker/docker-compose.yml up testdocker compose -f docker/docker-compose.yml up example
docker compose -f docker/docker-compose.yml down will clean up nicely afterwards.