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中分析。