[ 'handler' => [ 'class' => StreamHandler::class, 'constructor' => [ 'stream' => BASE_PATH . '/runtime/logs/hyperf.log', 'level' => Monolog\Logger::DEBUG, ], ], 'formatter' => [ 'class' => LineFormatter::class, 'constructor' => [ 'format' => null, 'dateFormat' => 'Y-m-d H:i:s', 'allowInlineLineBreaks' => true, ], ], ], 'app' => [ 'handler' => [ 'class' => RotatingFileHandler::class, 'constructor' => [ 'filename' => BASE_PATH . '/runtime/logs/app/app.log', 'level' => Monolog\Logger::DEBUG, 'maxFiles' => 7, ], ], 'formatter' => [ 'class' => LineFormatter::class, 'constructor' => [ 'format' => "[%datetime%] %level_name% [%channel%]: %message% %context%\n", 'dateFormat' => 'Y-m-d H:i:s', ], ], ], 'error' => [ 'handler' => [ 'class' => RotatingFileHandler::class, 'constructor' => [ 'filename' => BASE_PATH . '/runtime/logs/error/error.log', 'level' => Monolog\Logger::ERROR, 'maxFiles' => 30, ], // 可以添加邮件通知handler // [ // 'class' => \Monolog\Handler\NativeMailerHandler::class, // 'constructor' => [ // 'to' => 'admin@example.com', // 'subject' => 'Application Error', // 'from' => 'error@example.com', // 'level' => Monolog\Logger::ERROR, // ], // ], ], ], 'request' => [ 'handler' => [ 'class' => RotatingFileHandler::class, 'constructor' => [ 'filename' => BASE_PATH . '/runtime/logs/request/request.log', 'level' => Monolog\Logger::INFO, 'maxFiles' => 15, ], ], ], 'cron' => [ 'handler' => [ [ 'class' => RotatingFileHandler::class, 'constructor' => [ 'filename' => BASE_PATH . '/runtime/logs/crontab/cron.log', 'level' => Monolog\Logger::INFO, 'maxFiles' => 30, ], ], ], ], 'payment' => [ 'handler' => [ 'class' => RotatingFileHandler::class, 'constructor' => [ 'filename' => BASE_PATH . '/runtime/logs/payment/payment.log', 'level' => Monolog\Logger::INFO, 'maxFiles' => 90, ], ], ], 'audit' => [ 'handler' => [ 'class' => RotatingFileHandler::class, 'constructor' => [ 'filename' => BASE_PATH . '/runtime/logs/audit.log', 'level' => Monolog\Logger::INFO, 'maxFiles' => 365, ], ], ], 'cache' => [ 'handler' => [ 'class' => RotatingFileHandler::class, 'constructor' => [ 'filename' => BASE_PATH . '/runtime/logs/cache/cache.log', 'level' => Monolog\Logger::DEBUG, 'maxFiles' => 3, ], ], ], ];