-
背景
近期在使用 【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文件如下: