记一次Monolog的BufferHandler使用

Posted shqhdmr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次Monolog的BufferHandler使用相关的知识,希望对你有一定的参考价值。

laravel中可以设置自定义的日记channel(config/logging中设置),按照laravel-china的一篇文章,把log按一定格式并且以批量的方式写入日志文件:

https://learnku.com/articles/3567/monolog-optimization-and-elk-friendly-log-format

这里需要注意,对于BufferHandler是不适合在队列中使用的,从Log::method追踪Monolog源码(vendormonologmonologsrcMonologHandlerBufferHandler)可以发现

对于最后的批量操作,Monolog是register_shutdown_function()了一个close()方法的,即在脚本结束才会调用close()并在其中调用flush()把日记刷到文件中

但redis队列中的php脚本启动后,执行完任务并不会结束,导致没有机会调用close(),最终会发现任务执行完了,但是Log却没有任何反应

所以注意BufferHandler不适合在队列中使用

以上是关于记一次Monolog的BufferHandler使用的主要内容,如果未能解决你的问题,请参考以下文章

记一次简单的GetShell案例

记一次从web到内网的渗透

记一次ssh免密登录失败的debug经历

记一次 Centos 7 搭建 Nexus (Maven私服)

记一次网站攻击到提权的全部过程

记一次HTTP POST请求变成GET请求