82 lines
2.1 KiB
PHP
82 lines
2.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
/**
|
|
* This file is part of Hyperf.
|
|
*
|
|
* @link https://www.hyperf.io
|
|
* @document https://hyperf.wiki
|
|
* @contact group@hyperf.io
|
|
* @license https://github.com/hyperf/hyperf/blob/master/LICENSE
|
|
*/
|
|
|
|
use App\Log\AliSlsHandler;
|
|
use App\Log\AppendRequestIdProcessor;
|
|
use Monolog\Formatter\JsonFormatter;
|
|
use Monolog\Formatter\LineFormatter;
|
|
use Monolog\Handler\RotatingFileHandler;
|
|
use Psr\Log\LogLevel;
|
|
use function Hyperf\Support\env;
|
|
|
|
$env = env('APP_ENV', 'production');
|
|
$isProduction = $env === 'production';
|
|
$productionLogLevel = env('LOG_LEVEL', 'error');
|
|
|
|
$formatter = $isProduction
|
|
? [
|
|
'class' => JsonFormatter::class,
|
|
'constructor' => [
|
|
'format' => null,
|
|
'dateFormat' => 'Y-m-d H:i:s',
|
|
'allowInlineLineBreaks' => true,
|
|
],
|
|
]
|
|
: [
|
|
'class' => LineFormatter::class,
|
|
'constructor' => [
|
|
'format' => "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n",
|
|
'dateFormat' => 'Y-m-d H:i:s',
|
|
'allowInlineLineBreaks' => true,
|
|
],
|
|
];
|
|
|
|
$loggers = [
|
|
'default', 'sql', 'request', 'crontab', 'queue', 'timer', 'job', 'some', 'amqp'
|
|
];
|
|
|
|
$logLevel = $isProduction ? $productionLogLevel : LogLevel::INFO;
|
|
|
|
$config = [];
|
|
|
|
foreach ($loggers as $loggerName) {
|
|
$handler = $isProduction
|
|
? [
|
|
'class' => AliSlsHandler::class,
|
|
'constructor' => [
|
|
'filename' => BASE_PATH . sprintf('/runtime/logs/%s/%s.log', $loggerName, $loggerName),
|
|
'level' => $logLevel,
|
|
'maxFiles' => 30,
|
|
],
|
|
]
|
|
: [
|
|
'class' => RotatingFileHandler::class,
|
|
'constructor' => [
|
|
'filename' => BASE_PATH . sprintf('/runtime/logs/%s/%s.log', $loggerName, $loggerName),
|
|
'level' => $logLevel,
|
|
'maxFiles' => 30,
|
|
],
|
|
];
|
|
|
|
$config[$loggerName] = [
|
|
'handler' => $handler,
|
|
'formatter' => $formatter,
|
|
'processors' => [
|
|
[
|
|
'class' => AppendRequestIdProcessor::class,
|
|
],
|
|
],
|
|
];
|
|
}
|
|
|
|
return $config;
|