Laravel存储日志到MongoDB

原创 木鱼  2018-04-27 09:57  阅读 724 次

Laravel日志

Laravel 已经帮你配置好错误和异常处理的操作。另外,Laravel 也集成了 Monolog 日志函数库,Monolog 支持和提供多种强大的日志处理功能。

目标

存储日志到MongoDB

优点

MongoDB有性能高、支持分布式等很多优点,我们存日志到MongoDB也有很多好处,方便日志分析、项目搭集群等

开始

打开bootstrap/app.php,在return $app; 之前加入如下代码:

$app->configureMonologUsing(function ($monolog) {
   $monolog->pushHandler(
      new \Monolog\Handler\MongoDBHandler(new \mongoclient("mongodb://username:password@127.0.0.1:27017/database"), 'LaravelLog', 'logs')
   );
});

参数描述:MongoDB的连接字符串,修改为自己的即可

mongodb://username:password@127.0.0.1:27017/database

 

参数描述:实际要存储日志的数据库

LaravelLog

 

参数描述:具体要存储到哪一个集合里面(Collections)

logs

缺点及解决方案

bootstrap/app.php里修改的缺点显而易见,不能使用公用环境配置(.env、config),因为此时框架还没有加载完毕,虽然这样修改是文档推荐的做法。

解决方案一

当然也可以在代码前添加以下代码实现,然后使用getenv()函数获取.env里面的配置,不过个人认为这样做不好:

$loadEnv = new \Illuminate\Foundation\Bootstrap\DetectEnvironment();
$loadEnv->bootstrap($app);

解决方案二

同样的代码,可以放到app/Providers/AppServiceProvider.php里,而不放在bootstrap/app.php,不过这样同时会带来另一个问题,laravel.log文件和MongoDB里会同时写入一份日志。

 

 

就到这里吧

具体优缺点已经罗列出来,我也没有再深入了解下去,可能会有其他更好的解决方案。

本文地址:https://www.m5yu.com/laravel-log-mongodb.html
关注我们:请关注一下我们的微信公众号:扫描二维码,公众号:木鱼博客
版权声明:本文为原创文章,版权归 木鱼 所有,欢迎分享本文,转载请保留出处!

发表评论


  1. 电商多平台运营
    电商多平台运营 【农民】 @回复

    支持一个!我在支持一下