gateway workerman reload.sh 后没有日志,日志不写了。

书生帅气的程序员

具体原因没有找到,怀疑是workerman的bug。

需求是workerman 里的业务逻辑代码需要写日志,贪图方便,用echo var_dump输出。
但是workerman默认不记录。

logFile默认在Workerman上一级目录里。stdoutFile默认是/dev/null 也即是不保存

所以,自己写了一个方法,直接写入文件。追加到原先的日志里。

以下代码加到Events.php的Events类后面:

/**
 * 打印日志
 * @return void
 */
if (!function_exists('_do_log')) {
    function _do_log($msg, $type='默认')
    {
        $str = date('Y-m-d H:i:s') . PHP_EOL
            . '类型:' . $type . PHP_EOL
            . arraytostr($msg) . PHP_EOL;
        file_put_contents('./Applications/make_speed/'.date('Y-m-d').'log.log', $str, FILE_APPEND);
    }
}
// 数组转合适的字符串输入
function arraytostr($data)
{
    $str = '';

    if (is_array($data)) {
        $str .=  '[';
        foreach ($data as $key => $value) {
            if (is_array($value)) {
                $str .= $key .' => '.arraytostr($value).',';
            } else {
                $str .=  $key .' => '.$value.',';
            }

        }
        $str = rtrim($str, ',');
        $str .=  ']';
    } else {
        $str = (string) $data;
    }

    return $str;
}

截图

120 0 0
0个评论

书生帅气的程序员

220
积分
0
获赞数
0
粉丝数
29天前 加入
🔝