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

2023-10-16 19:19:14 浏览数 (3)

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

  • 源码:

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

代码语言:javascript复制
<?php
/**
 * 平台常用方法
 */
namespace commonhelper;

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;
    }
}
  • 调用方法参考:

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

代码语言:javascript复制
$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文件如下:

0 人点赞