php

php调试打印变量日志

行云流水
2022-04-28 / 0 评论 / 420 阅读 / 正在检测是否收录...

前言

最近给前一段时间搭建的wordpress商城对接第三方支付通道。小通道,没有现成的插件可用。只能自己写了。根据网上的资料,折腾了近一周。有时候一个很小的问题,也要折腾一天时间。只怪自己基础太菜,特此记录问题解决过程。

wordpress调试

wordpress 打开调试功能
//wp-config.php文件内添加
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG', true );
php打印调用堆栈
$tracelog = '';
$array =debug_backtrace();
unset($array[0]);
foreach($array as $row)
{
        $tracelog .= $row['file'].':'.$row['line'].'行,调用方:'.$row['function']."\n";
}
error_log($tracelog);
打印array变量
error_log(__METHOD__ . PHP_EOL .print_r($postdata, true));

typecho

打印变量到文件
file_put_contents("debug.log", $data."\n",FILE_APPEND);

file_put_contents("eee.txt", $content);

封装打印函数

封装一个日志打印服务
/*
 * 日志类
 * 每天生成一个日志文件
*/

class LogService
{
    public static function writeLog($position, $data, $dir = '')
    {
        //默认存放打印日志的目录
        $dir_path = __DIR__ . '/../log/';
        if ($dir) {
            //ltrim移除字符串左侧的字符/,这里统一设置/
            $dir_path .= ltrim($dir, '/');
        }

        //检查当前目录是否存在
        if (!is_dir($dir_path)) {
            //如果不存在则生成目录权限为777
            mkdir($dir_path, 0755, true);
        }

        //rtrim移除字符串右侧的空白字符或其他预定义字符
        $filepath = rtrim($dir_path, '/') . '/' . date("Ymd") . '.log';

        //设置一个打印日志的起始文字
        $delimiter_start = "\n+---------------------------- log start -----------------------------+\n记录时间:" . date("Y-m-d H:i:s") . "\n" . $position . "\n" . "----------------\n";

        //设置一个打印日志的结束文字
        $delimiter_end = "\n+---------------------------- log end -----------------------------+\n";

        //将要打印的文字以json形式,并转义成中文的格式追加的指定目录中的日志文件内
        file_put_contents($filepath, $delimiter_start . json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . $delimiter_end, FILE_APPEND);
    }

}

/*
//静态函数,不用实例化,可以直接引用方法
LogService::writeLog(__FILE__ . ':' . __LINE__, $result, $this->id);   //写入日志到log下的目录中
*/

评论 (0)

取消
只有登录/注册用户才可评论