1. Go to this page and download the library: Download timdev/stack-logger library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
timdev / stack-logger example snippets
use TimDev\StackLogger\Psr3StackLogger;
// can be anything that implements PSR-3
$yourLogger = $container->get(\Psr\Log\LoggerInterface::class);
// Decorate it
$mainLogger = new Psr3StackLogger($yourLogger);
// it works like a regular PSR-3 logger.
$mainLogger->info("Hello, World.");
// => [2020-10-17 17:40:53] app.INFO: Hello, World.
$mainLogger->info("Have some Context", ['my' => 'context']);
// => [2020-10-17 17:40:53] app.INFO: Have some Context {"my": "context"}
// but you might want to accumulate some context
$child1 = $mainLogger->withContext(['child' => 'context']);
$child1->info('From a child.', ['call-time' => 'context']);
// => [2020-10-17 17:40:53] app.INFO: From a child. {"child":"context","call-time":"context"}
// but $mainLogger is still around, without the additional context.
$mainLogger->info("Still here, with no accumulated context!");
// => [2020-10-17 17:40:53] app.INFO: Still here, with no accumulated context!
/**
* Imagine this is a long method that logs a bunch of stuff.
*/
function complexProcessing(User $user, \TimDev\StackLogger\StackLogger $logger){
$logger = $logger->withContext(['user-id' => $user->id]);
$logger->info("Begin processing");
// => [2020-10-17 17:40:53] app.INFO: Begin processing. { "user-id": 123 }
foreach($user->getMemberships() as $membership){
$l = $logger->withContext(['membership_id'=>$membership->id]);
$l->info("Checking membership");
// => [2020-10-17 17:40:53] app.INFO: Checking membership. { "user-id": 123, 'membership-id' => 1001 }
if ($membership->isExpired()){
$l->info('Membership is expired, stopping early.', ['expired-at' => $membership->expiredAt]);
// => [2020-10-17 17:40:53] app.INFO: Membership is expired, stopping early. { "user-id": 123, "membership-id" => 1001, "expired-at": "2020-06-30T12:00:00Z' }
continue;
}
// ...
$l->info('Done handling membership');
// => [2020-10-17 17:40:53] app.INFO: Done handling membership { "user-id": 123, 'membership-id' => 1001 }
}
$logger->info("Finished processing user.");
// => [2020-10-17 17:40:53] app.INFO: Finished processing user. { "user-id": 123 }
}
use TimDev\StackLogger\MonologStackLogger;
class SomeService
{
public function __construct(?MonologStackLogger $logger = null)
{
$this->logger = $logger ?? MonologStackLogger::getNullLogger();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.