improve log level formtting

This commit is contained in:
Max Nuding 2025-05-23 08:20:23 +02:00
parent d7030d3dd4
commit d6c646e45c
Signed by: phlaym
SSH Key Fingerprint: SHA256:mionmF+5trOUI1AxqzAU1ZK3tv6IiDcdKGXcMWwa1nQ
2 changed files with 28 additions and 0 deletions

View File

@ -14,10 +14,12 @@ use APnutI\Exceptions\NotSupportedPollException;
use APnutI\Exceptions\HttpPnutForbiddenException;
use APnutI\Exceptions\PollAccessRestrictedException;
use APnutI\Meta;
use APnutI\Logger\LevelNamePaddingProcessor;
use Monolog\Logger;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogHandler;
use Monolog\Formatter\LineFormatter;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
@ -88,6 +90,7 @@ class APnutI
if (!empty($app_name)) {
$this->app_name = $app_name;
}
if (empty($log_level)) {
$log_level = Logger::INFO;
} elseif (is_string($log_level)) {
@ -98,18 +101,26 @@ class APnutI
: new Logger($this->app_name);
$this->token_session_key = $this->app_name . 'access_token';
$this->token_redirect_after_auth = $this->app_name . 'redirect_after_auth';
$this->logger->pushProcessor(new LevelNamePaddingProcessor());
$formatter = new LineFormatter("[%datetime%] %channel%.%extra.level_padded%: %message% %context% %extra%\n");
if ($use_rotating_file_handler) {
$handler = new RotatingFileHandler($log_path, 5, $log_level, true);
$handler->setFormatter($formatter);
$this->logger->pushHandler($handler);
}
if ($use_stream_handler) {
$handler = new StreamHandler($log_path, $log_level, true);
$handler->setFormatter($formatter);
$this->logger->pushHandler($handler);
}
if ($use_syslog_handler) {
$handler = new SyslogHandler($this->app_name, \LOG_USER, $log_level, true);
$handler->setFormatter($formatter);
$this->logger->pushHandler($handler);
}
$this->server_token = null;
$this->logger->debug('__construct API');
if (isset($_SESSION[$this->token_session_key])) {

View File

@ -0,0 +1,17 @@
<?php
namespace APnutI\Logger;
use Monolog\Processor\ProcessorInterface;
use Monolog\LogRecord;
// See: https://stackoverflow.com/a/78901964
class LevelNamePaddingProcessor implements ProcessorInterface
{
public function __invoke(LogRecord $record): LogRecord
{
$record->extra['level_padded'] = str_pad($record->level->getName(), 6, ' ', STR_PAD_RIGHT);
return $record;
}
}