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