国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

框架升級(jí)后舊的代碼報(bào)錯(cuò)

riyue

問題描述

剛執(zhí)行完composer update,核心workerman/webman-framework從1.6.9升級(jí)到1.6.14,項(xiàng)目啟動(dòng)后報(bào)錯(cuò),升級(jí)前是正常的。
根據(jù)日志我能看出來是我自定義的日志處理文件中使用了request()函數(shù)導(dǎo)致的,升級(jí)后不能這樣用了嗎?
我需要將日志根據(jù)請(qǐng)求創(chuàng)建在不同目錄中,現(xiàn)在如何實(shí)現(xiàn)呢?

報(bào)錯(cuò)信息

D:\webman\WMProject>php windows.php 

Fatal error: Uncaught Error: Typed static property Workerman\Worker::$eventLoopClass must not be accessed before initialization in D:\webman\WMProject\vendor\workerman\webman-framework\src\Context.php:75
Stack trace:
#0 D:\webman\WMProject\vendor\workerman\webman-framework\src\Context.php(63): Webman\Context::getKey()
#1 D:\webman\WMProject\vendor\workerman\webman-framework\src\Context.php(92): Webman\Context::getObject()
#2 D:\webman\WMProject\vendor\workerman\webman-framework\src\App.php(614): Webman\Context::get('Webman\\Http\\Req...')
#3 D:\webman\WMProject\vendor\workerman\webman-framework\src\support\helpers.php(323): Webman\App::request()
#4 D:\webman\WMProject\support\com\my\monolog\MonologHandler.php(44): request()
#5 D:\webman\WMProject\vendor\workerman\webman-framework\src\support\Log.php(93): support\com\my\monolog\MonologHandler->__construct(NULL, 10485760, 100, true, 420)
#6 D:\webman\WMProject\vendor\workerman\webman-framework\src\support\Log.php(77): support\Log::handler('support\\com\\pas...', Array, Array)
#7 D:\webman\WMProject\vendor\workerman\webman-framework\src\support\Log.php(55): support\Log::handlers(Array)
#8 D:\webman\WMProject\config\process.php(23): support\Log::channel()
#9 D:\webman\WMProject\vendor\workerman\webman-framework\src\Config.php(207): include('D:\\webman\\Pasis...')
#10 D:\webman\WMProject\vendor\workerman\webman-framework\src\Config.php(63): Webman\Config::loadFromDir('D:\\webman\\Pasis...', Array)
#11 D:\webman\WMProject\vendor\workerman\webman-framework\src\support\App.php(162): Webman\Config::load('D:\\webman\\Pasis...', Array)
#12 D:\webman\WMProject\windows.php(23): support\App::loadAllConfig(Array)
#13 {main}

截圖報(bào)錯(cuò)信息里報(bào)錯(cuò)文件相關(guān)代碼

config/log.php

use support\com\my\monolog\MonologHandler;

return [
    // 日志保留天數(shù)(0代表永久保留)
    'storage_day' => 180,
    // 默認(rèn)日志通道
    'default'     => [
        // 處理默認(rèn)通道的handler,可以設(shè)置多個(gè)
        'handlers' => [
            [
                // 日志處理類
                'class'       => MonologHandler::class,
                'constructor' => [
                    // 日志通道路徑
                    null,
                    // 單個(gè)日志文件大小 (默認(rèn) 10MB) 單位字節(jié)
                    10485760,
                    Monolog\Logger::DEBUG, // 日志級(jí)別
                    // 日志被當(dāng)前handler處理后是否接著向基類進(jìn)行傳遞
                    true,
                    // 寫文件權(quán)限
                    0644
                ],
                // 日志格式化類及構(gòu)造函數(shù)參數(shù)
                'formatter'   => [
                    'class'       => Monolog\Formatter\LineFormatter::class,
                    'constructor' => [null, 'Y-m-d H:i:s.u', true],
                ],
            ]
        ],
    ],
];

MonologHandler.php是自定義類,構(gòu)造函數(shù)如下

/**
     * @param string $channelDirName 日志通道路徑
     * @param int $maxFileSize 單個(gè)日志文件大小 (默認(rèn) 10MB)
     * @param int $level 觸發(fā)此處理程序的最小日志記錄級(jí)別
     * @param bool $bubble 日志被當(dāng)前handler處理后是否接著向基類進(jìn)行傳遞
     * @param int|null $filePermission 寫文件權(quán)限 (默認(rèn) (0644) )
     * @param bool $useLocking 寫日志時(shí)是否鎖定文件(默認(rèn) false)
     *
     * @throws Exception
     */
    public function __construct($channelDirName = null, $maxFileSize = 10485760, $level = Logger::DEBUG, bool $bubble = true, int $filePermission = null, bool $useLocking = false)
    {
        // 請(qǐng)求對(duì)象
        $request = request();
        // 多應(yīng)用支持
        if ($request && !empty($request->app)) {
            $app = $request->app . DIRECTORY_SEPARATOR;
        } else {
            $app = 'cli' . DIRECTORY_SEPARATOR;
        }
        $this->runtimeLogPath = runtime_path() . DIRECTORY_SEPARATOR . 'logs' . DIRECTORY_SEPARATOR . $app . DIRECTORY_SEPARATOR;
        $this->channelDirName = $channelDirName;
        $dateDir              = date('Ym') . DIRECTORY_SEPARATOR;
        $filename             = date('d') . '.log';
        $fullFilePath         = empty($channelDirName) ? $this->runtimeLogPath . $dateDir . $filename : $this->runtimeLogPath . $this->channelDirName . DIRECTORY_SEPARATOR . $dateDir . $filename;
        $this->maxFileSize    = (int)$maxFileSize;
        if ($maxFileSize <= 0) {
            throw new Exception('單個(gè)日志文件大小最小值為0!');
        }
        parent::__construct($fullFilePath, $level, $bubble, $filePermission, $useLocking);
    }

操作系統(tǒng)及workerman/webman等框架組件具體版本

Windows11,PHP8.3,workerman/webman最新版,workerman/webman-framework 1.6.14

368 1 1
1個(gè)回答

riyue

等不上回復(fù)了,也沒時(shí)間深入逐行看代碼了,在MonologHandler.php類中對(duì)$request = request();外層增加了個(gè)try{}catch(){},先用著,先應(yīng)付著用

  • 暫無評(píng)論
??