当前位置: 首页 > news >正文

实现 think/queue 日志分离

当我们使用think/queue包含了比较多的不同队列,日志会写到runtime/log目录下,合并写入的,不好排查问题,我们遇到一个比较严重的就是用了不同用户来执行,权限冲突了,导致部分队列执行不了.

为了解决以上问题,本来希望通过Log::init设置不同日志路径的,但是本地测试没生效,于是用了一下方案:

1. event中AppInit添加QueueLog

<?php
// 事件定义文件use app\common\event\QueueLog;return ['bind'      => [],'listen'    => ['AppInit'  => [QueueLog::class],'HttpRun'  => [],'HttpEnd'  => [],'LogLevel' => [],'LogWrite' => [],],'subscribe' => [],
];

2. 创建QueueLog事件

<?php
namespace app\common\event;use think\App;
use think\facade\Request;class QueueLog
{public function handle(App $app): bool{if (!Request::isCli()) {return true;}$args = (array) $_SERVER['argv'];foreach ($args as $arg) {if (str_starts_with($arg, '--queue=')) {$queueName = substr($arg, 8);$app->setRuntimePath($app->getRuntimePath() . '/' . 'queue' . '-' . $queueName . '/');break;}}return true;}
}

这样的话,不同队列的日志就写到不同的路径下了


http://www.mrgr.cn/news/70231.html

相关文章:

  • ESLint 使用教程(四):ESLint 有哪些执行时机?
  • 设计模式之责任链模式(Chain Of Responsibility)
  • opencv常用api
  • C语言数据结构与算法--简单实现队列的入队和出队
  • 元器件封装
  • 推荐一个超漂亮ui的网页应用设计
  • Open3D (C++) 欧拉角转四元数公式推导及过程实现
  • 第10天:Fragments(碎片)使用-补充材料——‘MainActivity.kt‘解读
  • 详解Servlet API
  • MySQL引擎事务锁冲突分析
  • 互联网摸鱼日报(2024-11-11)
  • 多线程进阶
  • VUE3实现好看的通用网站源码模板
  • 一、HTML学习(基础知识学习)
  • goframe开发一个企业网站 验证码17
  • 【智慧出行】微信小程序智慧旅游服务平台,轻松规划旅程
  • 东胜物流软件AttributeAdapter.aspx存在SQL注入漏洞
  • [DEBUG]AttributeError: module ‘numpy‘ has no attribute ‘bool‘?
  • Scott Brinker:科技巨头裁员?大公司都在积极招聘Martech人才
  • JVM学习之路(5)垃圾回收
  • 大数据-218 Prometheus 插件 exporter 与 pushgateway 配置使用 监控服务 使用场景
  • HyperWorks进阶教程:OptiStruct材料和分析类型
  • 个人图书馆
  • 【A+B】
  • hive分区表
  • 学习threejs,导入STL格式的模型