1. Go to this page and download the library: Download ody/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/ */
ody / logger example snippets
// Using the logger
$logger->info('User logged in', ['id' => $userId]);
$logger->error('Failed to process payment', ['order_id' => $orderId]);
// Using the logger helper function
logger()->info('Processing request');
namespace App\Logging;
use Ody\Logger\AbstractLogger;use Ody\Logger\Formatters\FormatterInterface;use Ody\Logger\Formatters\JsonFormatter;use Ody\Logger\Formatters\LineFormatter;use Psr\Log\LoggerInterface;use Psr\Log\LogLevel;use Redis;
class RedisLogger extends AbstractLogger
{
/**
* @var Redis
*/
protected Redis $redis;
/**
* @var string
*/
protected string $channel;
/**
* Constructor
*/
public function __construct(
Redis $redis,
string $channel = 'logs',
string $level = LogLevel::DEBUG,
?FormatterInterface $formatter = null
) {
parent::__construct($level, $formatter);
$this->redis = $redis;
$this->channel = $channel;
}
/**
* Create a Redis logger from configuration
*/
public static function create(array $config): LoggerInterface
{
// Create Redis connection
$redis = new Redis();
$redis->connect(
$config['host'] ?? '127.0.0.1',
$config['port'] ?? 6379
);
if (isset($config['password'])) {
$redis->auth($config['password']);
}
// Create formatter
$formatter = null;
if (isset($config['formatter'])) {
$formatter = self::createFormatter($config);
}
// Return new logger instance
return new self(
$redis,
$config['channel'] ?? 'logs',
$config['level'] ?? LogLevel::DEBUG,
$formatter
);
}
/**
* Create a formatter based on configuration
*/
protected static function createFormatter(array $config): FormatterInterface
{
$formatterType = $config['formatter'] ?? 'json';
if ($formatterType === 'line') {
return new LineFormatter(
$config['format'] ?? null,
$config['date_format'] ?? null
);
}
return new JsonFormatter();
}
/**
* {@inheritdoc}
*/
protected function write(string $level, string $message, array $context = []): void
{
// Format log data
$logData = [
'timestamp' => time(),
'level' => $level,
'message' => $message,
'context' => $context
];
// Publish to Redis channel
$this->redis->publish(
$this->channel,
json_encode($logData)
);
}
}
public static function create(array $config): LoggerInterface
{
// Create dependencies based on configuration
// ...
// Return new logger instance
return new self(...);
}
protected function write(string $level, string $message, array $context = []): void
{
// Implement logging logic here
}