tp6自动选择模式输出日志dumps函数封装
tp的dump助手函数很强大,但是在cli的时候,经过下述缓冲区处理,主要是var_dump函数会出现中文乱码:
ob_start();
var_dump(...$vars);
$output = ob_get_clean();
下述封装了dumps函数,能够自动选择模式输出
/**
* 自动选择模式输出日志dumps([1,2,3],'debug')
* @param $content 输出内容mixture
* @param null $level 默认为空(且非生产环节)则调用dump输出,传入日志级别则写日志
* @return bool
*/
function dumps($output, $logLevel=null)
{
$env = env('APP_ENV', 'prod');
//debug, info, notice, warning, error, critical, alert, emergency
$prodLevel = ['notice', 'warning', 'error', 'critical', 'alert', 'emergency'];
if (in_array($logLevel, $prodLevel)){
if ($env === 'prod' and !in_array($logLevel, ['debug', 'info'])){
return false;//生产环境不记录debug和info日志
}
\think\facade\Log::write($output, $logLevel);//非生产环境记录若传level全部实时写log
//return true;//此项返回可配置若不返回,则全部同时输出
}elseif ($logLevel !== null){
\think\facade\Log::error(sprintf('dumps函数第2参数传入错误的类型:%s',$logLevel));
}
if (PHP_SAPI == 'cli') {
//cli输出不能够使用dump函数
$output = preg_replace('/\]\=\>\n(\s+)/m', '] => ', $output);
echo PHP_EOL . $output . PHP_EOL;
return true;
}
dump($output);//tp助手函数
}