Cleanup logs
This commit is contained in:
8
app/setup/settings/time.php
Normal file
8
app/setup/settings/time.php
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
use Psr\Container\ContainerInterface;
|
||||||
|
|
||||||
|
return [
|
||||||
|
DateTimeZone::class => function(ContainerInterface $container) {
|
||||||
|
return new DateTimeZone($container->get('TZ') ?? 'America/Santiago');
|
||||||
|
}
|
||||||
|
];
|
@ -17,85 +17,120 @@ return [
|
|||||||
return (new Monolog\Formatter\LineFormatter(null, null, false, false, true))
|
return (new Monolog\Formatter\LineFormatter(null, null, false, false, true))
|
||||||
->setBasePath('/code/');
|
->setBasePath('/code/');
|
||||||
},
|
},
|
||||||
Psr\Log\LoggerInterface::class => function(ContainerInterface $container) {
|
'baseMonologProcessors' => function(ContainerInterface $container) {
|
||||||
return new Monolog\Logger('incoviba', [
|
return [
|
||||||
new Monolog\Handler\FilterHandler(
|
|
||||||
($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development')
|
|
||||||
? (new Monolog\Handler\StreamHandler('/logs/error.log'))
|
|
||||||
->setFormatter($container->get(Monolog\Formatter\LineFormatter::class))
|
|
||||||
: (new Monolog\Handler\RotatingFileHandler('/logs/error.log', 10))
|
|
||||||
->setFormatter($container->get(Monolog\Formatter\LineFormatter::class)),
|
|
||||||
Monolog\Level::Error,
|
|
||||||
Monolog\Level::Error,
|
|
||||||
false
|
|
||||||
),
|
|
||||||
new Monolog\Handler\FilterHandler(
|
|
||||||
($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development')
|
|
||||||
? (new Monolog\Handler\StreamHandler('/logs/critical.log'))
|
|
||||||
->setFormatter($container->get(Monolog\Formatter\LineFormatter::class))
|
|
||||||
: (new Monolog\Handler\RotatingFileHandler('/logs/critical.log', 10))
|
|
||||||
->setFormatter($container->get(Monolog\Formatter\LineFormatter::class)),
|
|
||||||
Monolog\Level::Critical
|
|
||||||
),
|
|
||||||
new Monolog\Handler\FilterHandler(
|
|
||||||
($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development')
|
|
||||||
? (new Monolog\Handler\StreamHandler('/logs/debug.log'))
|
|
||||||
->setFormatter($container->get(Monolog\Formatter\LineFormatter::class))
|
|
||||||
: new Monolog\Handler\RedisHandler($container->get(Predis\ClientInterface::class), 'logs:notices'),
|
|
||||||
Monolog\Level::Debug,
|
|
||||||
Monolog\Level::Info,
|
|
||||||
false
|
|
||||||
),
|
|
||||||
new Monolog\Handler\FilterHandler(
|
|
||||||
($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development')
|
|
||||||
? (new Monolog\Handler\StreamHandler('/logs/notices.log'))
|
|
||||||
->setFormatter($container->get(Monolog\Formatter\LineFormatter::class))
|
|
||||||
: (new Incoviba\Common\Implement\Log\Handler\MySQL($container->get(Incoviba\Common\Define\Connection::class)))
|
|
||||||
->setFormatter(new \Incoviba\Common\Implement\Log\Formatter\PDO()),
|
|
||||||
Monolog\Level::Notice,
|
|
||||||
Monolog\Level::Warning,
|
|
||||||
false
|
|
||||||
)
|
|
||||||
], [
|
|
||||||
$container->get(Incoviba\Common\Implement\Log\Processor\User::class),
|
|
||||||
$container->get(Monolog\Processor\IntrospectionProcessor::class),
|
$container->get(Monolog\Processor\IntrospectionProcessor::class),
|
||||||
$container->get(Monolog\Processor\WebProcessor::class),
|
$container->get(Monolog\Processor\WebProcessor::class),
|
||||||
$container->get(Monolog\Processor\MemoryUsageProcessor::class),
|
$container->get(Monolog\Processor\MemoryUsageProcessor::class),
|
||||||
$container->get(Monolog\Processor\MemoryPeakUsageProcessor::class),
|
$container->get(Monolog\Processor\MemoryPeakUsageProcessor::class),
|
||||||
$container->get(Monolog\Processor\PsrLogMessageProcessor::class),
|
$container->get(Monolog\Processor\PsrLogMessageProcessor::class),
|
||||||
], new DateTimeZone($container->get('TZ') ?? 'America/Santiago'));
|
$container->get(Monolog\Processor\UidProcessor::class),
|
||||||
|
];
|
||||||
|
},
|
||||||
|
'defaultMonologHandlers' => function(ContainerInterface $container) {
|
||||||
|
$baseHandlers = [
|
||||||
|
'critical' => [
|
||||||
|
'handler' => Monolog\Handler\RotatingFileHandler::class,
|
||||||
|
'filename' => 'critical.log',
|
||||||
|
'levels' => Monolog\Level::Critical
|
||||||
|
],
|
||||||
|
'error' => [
|
||||||
|
'handler' => Monolog\Handler\RotatingFileHandler::class,
|
||||||
|
'filename' => 'error.log',
|
||||||
|
'levels' => [Monolog\Level::Error, Monolog\Level::Error],
|
||||||
|
],
|
||||||
|
'notices' => [
|
||||||
|
'handler' => Incoviba\Common\Implement\Log\Handler\MySQL::class,
|
||||||
|
'levels' => [Monolog\Level::Notice, Monolog\Level::Warning]
|
||||||
|
],
|
||||||
|
'debug' => [
|
||||||
|
'handler' => Monolog\Handler\RedisHandler::class,
|
||||||
|
'name' => 'notices',
|
||||||
|
'levels' => [Monolog\Level::Debug, Monolog\Level::Info]
|
||||||
|
],
|
||||||
|
];
|
||||||
|
if ($container->has('ENVIRONMENT') and $container->get('ENVIRONMENT') === 'development') {
|
||||||
|
$baseHandlers['critical']['handler'] = Monolog\Handler\StreamHandler::class;
|
||||||
|
$baseHandlers['error']['handler'] = Monolog\Handler\StreamHandler::class;
|
||||||
|
$baseHandlers['notices']['handler'] = Monolog\Handler\StreamHandler::class;
|
||||||
|
$baseHandlers['notices']['filename'] = 'notices.log';
|
||||||
|
$baseHandlers['debug']['handler'] = Monolog\Handler\StreamHandler::class;
|
||||||
|
$baseHandlers['debug']['filename'] = 'debug.log';
|
||||||
|
}
|
||||||
|
$handlers = [];
|
||||||
|
foreach ($baseHandlers as $handlerData) {
|
||||||
|
if (in_array($handlerData['handler'], [
|
||||||
|
Monolog\Handler\StreamHandler::class,
|
||||||
|
Monolog\Handler\RotatingFileHandler::class,
|
||||||
|
])) {
|
||||||
|
$params = [
|
||||||
|
"/logs/{$handlerData['filename']}",
|
||||||
|
];
|
||||||
|
if ($handlerData['handler'] === Monolog\Handler\RotatingFileHandler::class) {
|
||||||
|
$params []= 10;
|
||||||
|
}
|
||||||
|
$handler = new $handlerData['handler'](...$params)
|
||||||
|
->setFormatter($container->get(Monolog\Formatter\LineFormatter::class));
|
||||||
|
} elseif ($handlerData['handler'] === Incoviba\Common\Implement\Log\Handler\MySQL::class) {
|
||||||
|
$params = [
|
||||||
|
$container->get(Incoviba\Common\Define\Connection::class)
|
||||||
|
];
|
||||||
|
$handler = new $handlerData['handler'](...$params)
|
||||||
|
->setFormatter(new \Incoviba\Common\Implement\Log\Formatter\PDO());
|
||||||
|
} elseif ($handlerData['handler'] === Monolog\Handler\RedisHandler::class) {
|
||||||
|
$params = [
|
||||||
|
$container->get(Predis\ClientInterface::class),
|
||||||
|
$handlerData['name']
|
||||||
|
];
|
||||||
|
$handler = new $handlerData['handler'](...$params);
|
||||||
|
}
|
||||||
|
$params = [
|
||||||
|
$handler,
|
||||||
|
];
|
||||||
|
if (is_array($handlerData['levels'])) {
|
||||||
|
$params += $handlerData['levels'];
|
||||||
|
} else {
|
||||||
|
$params []= $handlerData['levels'];
|
||||||
|
$params []= null;
|
||||||
|
}
|
||||||
|
$params []= false;
|
||||||
|
$handlers []= new Monolog\Handler\FilterHandler(...$params);
|
||||||
|
}
|
||||||
|
return $handlers;
|
||||||
|
},
|
||||||
|
Psr\Log\LoggerInterface::class => function(ContainerInterface $container) {
|
||||||
|
return new Monolog\Logger('incoviba',
|
||||||
|
$container->get('defaultMonologHandlers'),
|
||||||
|
[$container->get(Incoviba\Common\Implement\Log\Processor\User::class)]
|
||||||
|
+ $container->get('baseMonologProcessors'),
|
||||||
|
$container->get(DateTimeZone::class)
|
||||||
|
);
|
||||||
},
|
},
|
||||||
'loginLogger' => function(ContainerInterface $container) {
|
'loginLogger' => function(ContainerInterface $container) {
|
||||||
return new Monolog\Logger('login', [
|
return new Monolog\Logger('login',
|
||||||
|
[
|
||||||
new Monolog\Handler\RedisHandler($container->get(Predis\ClientInterface::class), 'logs:login'),
|
new Monolog\Handler\RedisHandler($container->get(Predis\ClientInterface::class), 'logs:login'),
|
||||||
], [
|
],
|
||||||
$container->get(Monolog\Processor\IntrospectionProcessor::class),
|
$container->get('baseMonologProcessors'),
|
||||||
$container->get(Monolog\Processor\WebProcessor::class),
|
$container->get(DateTimeZone::class)
|
||||||
$container->get(Monolog\Processor\MemoryUsageProcessor::class),
|
);
|
||||||
$container->get(Monolog\Processor\MemoryPeakUsageProcessor::class),
|
|
||||||
$container->get(Monolog\Processor\PsrLogMessageProcessor::class),
|
|
||||||
]);
|
|
||||||
},
|
},
|
||||||
'accessLogger' => function(ContainerInterface $container) {
|
'accessLogger' => function(ContainerInterface $container) {
|
||||||
return new Monolog\Logger('access', [
|
return new Monolog\Logger('access',
|
||||||
|
[
|
||||||
new Monolog\Handler\RedisHandler($container->get(Predis\ClientInterface::class), 'logs:access'),
|
new Monolog\Handler\RedisHandler($container->get(Predis\ClientInterface::class), 'logs:access'),
|
||||||
], [
|
],
|
||||||
$container->get(Monolog\Processor\IntrospectionProcessor::class),
|
$container->get('baseMonologProcessors'),
|
||||||
$container->get(Monolog\Processor\WebProcessor::class),
|
$container->get(DateTimeZone::class)
|
||||||
$container->get(Monolog\Processor\MemoryUsageProcessor::class),
|
);
|
||||||
$container->get(Monolog\Processor\MemoryPeakUsageProcessor::class),
|
|
||||||
$container->get(Monolog\Processor\PsrLogMessageProcessor::class),
|
|
||||||
]);
|
|
||||||
},
|
},
|
||||||
'externalLogger' => function(ContainerInterface $container) {
|
'externalLogger' => function(ContainerInterface $container) {
|
||||||
return new Monolog\Logger('external', [
|
return new Monolog\Logger('external',
|
||||||
|
[
|
||||||
new Monolog\Handler\RedisHandler($container->get(Predis\ClientInterface::class), 'logs:external'),
|
new Monolog\Handler\RedisHandler($container->get(Predis\ClientInterface::class), 'logs:external'),
|
||||||
], [
|
],
|
||||||
$container->get(Monolog\Processor\IntrospectionProcessor::class),
|
$container->get('baseMonologProcessors'),
|
||||||
$container->get(Monolog\Processor\WebProcessor::class),
|
$container->get(DateTimeZone::class)
|
||||||
$container->get(Monolog\Processor\MemoryUsageProcessor::class),
|
);
|
||||||
$container->get(Monolog\Processor\MemoryPeakUsageProcessor::class),
|
|
||||||
$container->get(Monolog\Processor\PsrLogMessageProcessor::class),
|
|
||||||
]);
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
Reference in New Issue
Block a user