php error_log()

本文介绍PHP内置函数error_log()的使用方法,重点讲解如何利用此函数记录SQL执行错误,实现简易的日志记录功能,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    /**
     * 根据时间获取目录名
     * @return string
     */
    public static function getDirNameForDate()
    {
        $diry = date("Y");
        $dirm = date("md");
        return $diry . DIRECTORY_SEPARATOR . $dirm . DIRECTORY_SEPARATOR;
    }
    /**
     * 写测试日志
     * @param $content
     * @param string $fileName
     * @return bool
     */
    public static function myLog($content, $fileName = "")
    {
        $dirForDate = $getDirNameForDate=self::getDirNameForDate();
        $dir=LOG_PATH.$dirForDate;
        self::createFolders($dir,0755);
        if (empty($fileName)) {
            $url = $dir . DIRECTORY_SEPARATOR . 'testlog' . date('Ymd', time()) . ".log";
        } else {
            $url = $dir. DIRECTORY_SEPARATOR . $fileName;
        }

        // 获取当前时间的微秒数
        $microtime = microtime(true); // 返回浮点数,包含秒和微秒

        // 获取当前时间的毫秒值
        $milliseconds = round(($microtime - floor($microtime)) * 1000);
        $mi=str_pad($milliseconds, 3, '0', STR_PAD_LEFT);

        $content = "执行时间:" . date('Y-m-d H:i:s', time()) .$mi.PHP_EOL. $content;
        $myfile = fopen($url, "a+") or die("Unable to open file!");
        fwrite($myfile, $content . "\r\n");
        fclose($myfile);
        return true;
    }


    /**
     * 日志
     * @param $data
     * @param string $fileName
     */
    public static function myLogSave($data,$fileName='defaultLog')
    {
        $content = '';
        if (is_array($data)) {
            $content = json_encode($data, JSON_UNESCAPED_UNICODE);
        } else if (is_object($data)) {
            $content = '对象:'.json_encode($data, JSON_UNESCAPED_UNICODE);
        } else if (is_string($data)) {
            $content = $data;
        } else {
            $content = json_encode($data, JSON_UNESCAPED_UNICODE);
        }

        Tool::myLog($content, $fileName . date('Ymd', time()) . ".log");
    }
<?php
namespace app\tools;
use think\Request;
/**
 *  自定义的异常处理
 */
class MyException extends \Exception
{
    private $myCode = 0;
    private $myMessage = "";
    public function __construct($message)
    {
        parent::__construct($message);
    }

    public function toJson($code)
    {
        $obj = new ErrorCode();
        if( is_numeric($code) )
        {
            $this->myCode    = $code;
            $this->myMessage = $obj->getMessage($code);
        }else{
            $this->myCode    = ErrorCode::ERROR_SYSTEM;
            $this->myMessage = $code;
        }

        if(isset( $_REQUEST['jsonpcallback'] )){
            $jsoncallback = htmlspecialchars($_REQUEST['jsonpcallback']);
            echo $jsoncallback . "(".json_encode(['rtnCode'=>$this->myCode, 'rtnMsg'=>$this->myMessage],JSON_UNESCAPED_UNICODE).")";
        }else{
            header('Content-type:application/json; charset=utf-8');
            echo json_encode(['rtnCode'=>$this->myCode, 'rtnMsg'=>$this->myMessage],JSON_UNESCAPED_UNICODE);
        }

        $request = Request::instance();
        $module = $request->module(); // 获取当前模块
        $controller = $request->controller(); // 获取当前控制器
        $action = $request->action(); // 获取当前方法


        $content =
            "\r\n执行".$module.DIRECTORY_SEPARATOR .$controller.DIRECTORY_SEPARATOR.$action.
            "\r\nget参数是:".json_encode($_REQUEST).
            "\r\n报错文件是:".$this->file.
            "\r\n报错行数是:".$this->line.
            "\r\n返回码是:".$this->myCode.
            "\r\n返回信息是:".$this->myMessage."\r\n";
        $tool = new Tool();
        $tool->myLog($content, "requestErrorLog".date('Ymd', time()).".log");
        exit;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值