Laravel 5.6+ 使用 MongoDB 存储框架日志
- 开发技术
- 2020-04-22
- 1343
- 0
第1步
电脑或服务器安装mongodb数据库
mongodb官网
菜鸟教程
第2步
安装 PHP mongodb 扩展
第3步
安装高度封装的包装库;使用 MongoDB 官方提供即可
官方
github$ composer require mongodb/mongodb
第4步
打开 config/logging.php,修改其 channels
return [// ...'channels' => [// ...'mongodb' => [ // 此处可以根据需求调整'driver' => 'custom', // 此处必须为 custom'via' => CreateCustomLogger::class, // 当 driver 设置为 custom 时,使用 via 配置项所指向的工厂类创建 logger// 以下 env 配置名可以根据需求调整'server' => env('LOG_MONGO_SERVER', 'mongodb://localhost:27017'),'database' => env('LOG_MONGO_DB', 'logs'),'collection' => env('LOG_MONGO_COLLECTION', 'logs'),'level' => env('LOG_MONGO_LEVEL', 'debug'), // 日志级别],],];
接着你需要将 default 修改为 mongodb,也可以修改 .env。
return ['default' => env('LOG_CHANNEL', 'mongodb'), // 我直接将默认值修改为 mongodb,也就是 channels 内新增的配置项。// ...]
找个合适的位置(我使用 app/Logging)创建 CreateCustomLogger.php。
<?phpnamespace App\Logging;use Monolog\Logger;use Monolog\Handler\MongoDBHandler;use Monolog\Processor\WebProcessor;class CreateCustomLogger{/*** Create a custom Monolog instance.** @param array $config* @return \Monolog\Logger*/public function __invoke(array $config){$logger = new Logger(''); // 创建 Logger$handler = new MongoDBHandler( // 创建 Handlernew \MongoDB\Client($config['server']), // 创建 MongoDB 客户端(依赖 mongodb/mongodb)$config['database'],$config['collection']);$handler->setLevel($config['level']);$logger->pushHandler($handler); // 挂载 Handler$logger->pushProcessor(new WebProcessor($_SERVER)); // 记录额外的请求信息return $logger;}}
好了,接下来可以执行 php artisan tinker,输入 Log::warning(…) 测试你的成果了。
别忘记把 MongoDB 服务启动。