Laravel同时生成Logstash格式日志
2020年1月31日
如果你需要将Laravel的日志倒入ELK进行统计查看,就会发现默认的日志格式并不能被Logstash认识,你需要进行各种正则判断,参数转换。如果你使用的是Laravel5.6以上版本,那么恭喜,有非常优雅的方案通过配置即可完成。
这里主要用到channels
的方案,通过再自定义话配置一种日志记录方式来实现。
思路
使用stack
channel搭配,生成默认的日志和一份json形式的日志。
josn形式的日志通过monolog提供的方法实现。
代码
File: config/logging.php
1 | 'channels' => [ |
这里看到使用handler
和formatter
来搭配进行日志的处理和格式化。
其中Monolog默认库里提供可选用的有很多,具体看文档。
另外需要注意的则是with
和formatter_with
两个参数,这是为handler
和formatter
分别实例化提供必要参数的方式,具体提供哪些必要参数可以查看Class的代码。
这样,就可以使用Filebeat来检测jsonlogs/*.log
并上传到ELK中分析。