PHP code example of monkeyscloud / monkeyslegion-logger

1. Go to this page and download the library: Download monkeyscloud/monkeyslegion-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/ */

    

monkeyscloud / monkeyslegion-logger example snippets


use MonkeysLegion\Logger\Logger;
use MonkeysLegion\Logger\Handler\StreamHandler;
use MonkeysLegion\Logger\LogLevel;

// Create a logger with a file handler
$logger = new Logger(
    handlers: [new StreamHandler('logs/app.log', LogLevel::Debug)],
    channelName: 'app',
);

$logger->info('User {name} logged in', ['name' => 'Jorge']);
$logger->error('Payment failed', ['order_id' => 42]);

$logger->close();

use MonkeysLegion\Logger\LogManager;

$manager = new LogManager([
    'default' => 'stack',
    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['daily', 'console'],
        ],
        'daily' => [
            'driver' => 'daily',
            'path' => 'logs/app.log',
            'level' => 'debug',
            'max_files' => 14,
        ],
        'console' => [
            'driver' => 'console',
            'level' => 'warning',
            'colorize' => true,
        ],
    ],
]);

$logger = $manager->channel(); // default = stack
$logger->info('Application started');

// Switch channels
$apiLogger = $manager->channel('daily');
$apiLogger->error('API timeout');

$handler = new StreamHandler('logs/app.log', LogLevel::Warning);

$handler = new RotatingFileHandler('logs/app.log', maxFiles: 14);

$handler = new ConsoleHandler(LogLevel::Debug, colorize: true);

$handler = new BufferHandler($innerHandler, bufferLimit: 100);

$handler = new FingersCrossedHandler($innerHandler, LogLevel::Error);

$handler = new DeduplicationHandler($innerHandler, deduplicationWindow: 60);

$handler = new SamplingHandler($innerHandler, sampleRate: 0.01); // 1%
// Errors always pass through regardless of sample rate

$handler = new GroupHandler([$fileHandler, $consoleHandler]);

use MonkeysLegion\Logger\Processor\RedactProcessor;

$processor = new RedactProcessor();
// Automatically redacts: password, token, api_key, secret, credit_card, ssn, etc.

$logger = new Logger(
    handlers: [$handler],
    processors: [$processor],
);

$logger->info('Login', ['user' => 'jorge', 'password' => 'secret']);
// Output: {"context":{"user":"jorge","password":"********"}}

use MonkeysLegion\Logger\Processor\UidProcessor;          // Request correlation ID
use MonkeysLegion\Logger\Processor\MemoryProcessor;       // Memory usage & peak
use MonkeysLegion\Logger\Processor\IntrospectionProcessor; // Call site (file, line)
use MonkeysLegion\Logger\Processor\TimestampProcessor;    // Microsecond timestamps
use MonkeysLegion\Logger\Processor\EnvironmentProcessor;  // Hostname, PHP version, SAPI

$logger->pushContext(['request_id' => 'abc-123']);

$logger->info('Processing started');  // Includes request_id
$logger->info('Step 2 complete');     // Includes request_id

$logger->popContext();

$logger->info('Done'); // No request_id

$metrics = $logger->getMetrics();

echo $metrics->totalCount;   // Total log entries
echo $metrics->errorRate;    // Ratio of errors to total (0.0–1.0)
echo $metrics->countFor(LogLevel::Error); // Count per level

use MonkeysLegion\Logger\LogLevel;

$level = LogLevel::Error;
$level->priority();       // 4
$level->isError();        // true
$level->label();          // 'ERROR'
$level->syslogSeverity(); // LOG_ERR

LogLevel::fromPsr3('fatal'); // LogLevel::Critical