Yii2 advanced 框架,自定义Log日志方案

news2024/7/11 11:33:57
  • 背景

    近期在使用 【Yii2 advanced】框架时
    在接触到 微信支付回调操作时,想要将微信服务器请求的参数信息记录下来
    但是,不喜欢框架自带的日志配置方式
    在此,推荐使用一种自定义文件目录与log记录形式的方案
    希望有此需求的道友,能有所帮助,欢迎指摘 …

  • 源码:

当前,我将需要的公用方法,写在 Helper 文件中,对应文件位置:common\helper\Helper.php

<?php
/**
 * 平台常用方法
 */
namespace common\helper;

class Helper
{
    /**
     * Notes:日志记录
     * DateTime: 2023/4/21 16:56
     * @param $project_dir '项目名称目录'
     * @param $msg
     * @param string $note
     * @param string $file_name
     * @return bool
     */
    public static function addLog($project_dir, $msg, $note = '', $file_name = '')
    {
        if (empty($project_dir) || empty($msg)) {
            return false;
        }
        $project_dir = trim($project_dir);
        if (!in_array($project_dir, ['api', 'backend', 'clientapi', 'mpapi', 'merchant'])) {
            return false;
        }

        $save_log_msg = is_string($msg) ? $msg : json_encode($msg,JSON_UNESCAPED_UNICODE);
        if (!empty($note)) {
            $save_log_msg = '[' . $note . '] ==> ' . $save_log_msg;
        }
        $save_log_msg = '[' . date('Y-m-d H:i:s') . '] ==> ' . $save_log_msg;

        //保存文件名称
        $file_name = empty($file_name) ? date('Ymd').'_log.txt' : $file_name;
        
        $ds = DIRECTORY_SEPARATOR;
        $payDir = dirname(\Yii::$app->basePath);
        $save_dir = $payDir . $ds . $project_dir . $ds . 'log' . $ds ;
        if (!is_dir($save_dir)){
            mkdir($save_dir,0777);
        }
        file_put_contents($save_dir . $file_name, $save_log_msg . PHP_EOL, FILE_APPEND);
        return true;
    }
}
  • 调用方法参考:

在需要记录相应日志的代码位置,可使用如下方法

$array = json_decode(json_encode($postObj), TRUE);
$log_file = date("Ym").'_miniPay.txt';
Helper::addLog('mpapi',json_encode($array,JSON_UNESCAPED_UNICODE),'NotifyMiniPayPattern',$log_file);

  • 对应生成并记录的 log文件如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/888934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA下方工具栏SideBar没有Services解决方法 IDEA配合微服务学习多端口管理打开Services栏方法

问题 微服务学习时&#xff0c;一次要打开多个端口&#xff0c;比如8080给order模块、8081给user模块……这就需要用idea管理多端口。 这时候就可以用到Services栏进行管理。 解决 首先看下方Sidebar没有Services。 打开Services 打开方式一&#xff1a;手动打开 在IDEA中…

智能语音开放平台选哪家,启英泰伦提供硬件、软件一体化服务

离线智能语音产品方案的开发主要包含两个方面&#xff1a;硬件和软件。这里硬件是指采用语音芯片等电子元器件为该产品设计的电路板&#xff0c;软件是指基于电路板上主控芯片的种类及产品功能需求所开发的代码&#xff0c;再经过编译工具等生成可下载到主控芯片中的语音固件&a…

【云原生、k8s】Calico网络策略

第四阶段 时 间&#xff1a;2023年8月17日 参加人&#xff1a;全班人员 内 容&#xff1a; Calico网络策略 目录 一、前提配置 二、Calico网络策略基础 1、创建服务 2、启用网络隔离 3、测试网络隔离 4、允许通过网络策略进行访问 三、Calico网络策略进阶 1、创…

【RP2040】香瓜树莓派RP2040之搭建开发环境(windows)

本文最后修改时间&#xff1a;2022年08月23日 01:57 一、本节简介 本节以树莓派pico开发板为例&#xff0c;搭建windows下的编译环境。 二、实验平台 1、硬件平台 1&#xff09;树莓派pico开发板 ①树莓派pico开发板 ②micro usb数据线 2&#xff09;电脑 2、软件平台 …

绝对值函数的可导性

绝对值函数的可导性 声明&#xff1a;下面截图来自《考研数学常考题型解题方法技巧归纳》

无涯教程-Perl - syswrite函数

描述 此函数尝试将SCALAR中的LENGTH个字节写入与FILEHANDLE相关的文件。如果指定了OFFSET,则从提供的SCALAR中的OFFSET字节中读取信息。该函数使用C /操作系统的write()函数,该函数绕过普通缓冲。 语法 以下是此函数的简单语法- syswrite FILEHANDLE, SCALAR, LENGTH, OFFS…

[oneAPI] 手写数字识别-GAN

[oneAPI] 手写数字识别-GAN 手写数字识别参数与包加载数据模型训练过程结果 oneAPI 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI&#xff1a;https://devcloud.intel.com/oneapi/get_started/aiAnalyticsToolki…

高德地图1.4.15楼层处理

前因&#xff1a; 接入了高德1.4.15JS API的项目中使用了mapStyle: ‘amap://styles/grey’,在这个模式下楼层几近透明&#xff0c;方案一是升级到2.0然后加wallColor &#xff08;表示建筑物墙面的颜色&#xff09;和roofColor &#xff08;表示建筑物屋顶的颜色&#xff09;…

机器学习与模型识别1:SVM(支持向量机)

一、简介 SVM是一种二类分类模型&#xff0c;在特征空间中寻找间隔最大的分离超平面&#xff0c;使得数据得到高效的二分类。 二、SVM损失函数 SVM 的三种损失函数衡量模型的性能。 1. 0-1 损失&#xff1a; 当正例样本落在 y0 下方则损失为 0&#xff0c;否则损失为…

uniapp小程序实现上传图片功能,并显示上传进度

效果图&#xff1a; 实现方法&#xff1a; 一、通过uni.chooseMedia(OBJECT)方法&#xff0c;拍摄或从手机相册中选择图片或视频。 官方文档链接: https://uniapp.dcloud.net.cn/api/media/video.html#choosemedia uni.chooseMedia({count: 9,mediaType: [image,video],so…

如何最大利用WhatsApp高效拓客引流?

对话式商务盛行&#xff0c;WhatsApp是许多国家最受欢迎的聊天应用程序&#xff0c;包括巴西、德国、印尼、泰国、新加坡等。用户渗透率超过80%&#xff0c;作为一个无敌社交APP&#xff0c;自然也是跨境业务的首选。 以下是使用 WhatsApp 进行电子商务时需要记住的一些策略。…

做好需求管理的四个最佳实践

改进您的需求管理过程可以对你的开发过程产生重大影响&#xff0c;所带来的益处包括&#xff1a;提高效率、缩短上市时间&#xff0c;以及节省宝贵的预算和资源。需求是最能向工程师说明要构建什么&#xff0c;以及向测试人员说明要测试什么的信息。 需求具有三个主要功能&…

数据结构——栈(C语言)

需求&#xff1a;无 栈的概念&#xff1a; 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端为栈底。栈中的数据元素遵守后进先出&#xff08;LIFO&#xff09;原则。压栈&…

FPGA应用学习笔记-----布线布局优化

优化约束&#xff1a; 设置到最坏情况下会过多 布局和布线之间的关系&#xff1a; 最重要的是与处理器努力的&#xff0c;挂钩允许设计者调整处理器努力的程度 逻辑复制&#xff1a; 不能放置多个负载&#xff0c;只使用在关键路径钟 减少布线延时&#xff0c;但会增加面积&a…

大规模SFT微调指令数据的生成

前言 想要微调一个大模型&#xff0c;前提是得有一份高质量的SFT数据&#xff0c;可以这么说其多么高质量都不过分&#xff0c;关于其重要性已经有很多工作得以验证&#xff0c;感兴趣的小伙伴可以穿梭笔者之前的一篇文章&#xff1a; 《大模型时代下数据的重要性》&#xff…

【AI】百度AI助力开发,测试一下百度搜索的AI能力如何

百度搜索页面有个AI对话&#xff0c;点击进去看看&#xff1a; 是不是文心一言&#xff1f;它说不是。 测试一下辅助写代码功能&#xff1a; 1、写个爬虫&#xff1a; 代码&#xff1a; import requests from bs4 import BeautifulSoup# 目标网站的URL url "http:/…

Ubuntu虚拟机网络无法连接的几种解决方法

虚拟机网络无法连接的几种解决方法 问题状况描述可能的解决方案 问题状况描述 Ubuntu虚拟机没有网络&#xff0c;无法ping通互联网&#xff0c;左上角网络连接图标消失等情况可能的解决方案 1.重启虚拟机网络编辑器 2.重启虚拟机网络适配器 3.重启虚拟机网络服务器1.重启网络…

优思学院|五大工具:APQP、FMEA、MSA、SPC、PPAP

在现代制造业中&#xff0c;质量是企业成功的关键之一。为了确保产品和过程的质量&#xff0c;需要采用一系列有效的工具和方法。APQP、FMEA、MSA、SPC和PPAP被认定为质量管理体系的五大核心工具&#xff0c;这些工具不仅在汽车行业中得到广泛应用&#xff0c;还被其他制造领域…

生信豆芽菜-分组比较的表格

网址&#xff1a;http://www.sxdyc.com/visualsCliTableCompare 1、数据准备 两列的数据&#xff0c;最后比较这两组的样本分布 2、选择两个分组的颜色&#xff0c;有几个就选几个颜色&#xff0c;表头颜色&#xff0c;图片的宽度和高度&#xff0c;提交等待运行成功 3、结…

PHP入门基础教程 - 专栏导读

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责…