Open m-dnxbf opened 3 years ago
ThinkPHP6 自己添加socketlog的方法: 讲slog.php和 slog.function.php放入 app目录。 编辑app/event.php:
include 'slog.function.php';
slog([
'enable' => true,
//是否打印日志的开关
'host' => 'localhost',
//websocket服务器地址,默认localhost
'optimize' => false,
//是否显示利于优化的参数,如果运行时间,消耗内存等,默认为false
'show_included_files' => false,
//是否显示本次程序运行加载了哪些文件,默认为false
'error_handler' => false,
//是否接管程序错误,将程序错误显示在console中,默认为false
'force_client_id' => isset($_GET['slog']) ? $_GET['slog'] : '',
//日志强制记录到配置的client_id,默认为空
'allow_client_ids' => [],
], 'config');
return [
'bind' => [
],
'listen' => [
'AppInit' => [
function(){
//监听
\think\facade\Db::listen(function ($sql, $time, $explain) {
// 记录SQL
slog($sql . ' [' . $time . 's]', 'trace');
if ($time >= 0.1) {
slog('sql执行时间长', 'error');
}
if (!empty($explain)) {
$arr = array_change_key_case($explain, CASE_LOWER);
if (false !== strpos($arr['extra'], 'Using filesort')) {
slog('Using filesort', 'error');
}
if (!empty($explain)) {
$arr = array_change_key_case($explain, CASE_LOWER);
if (false !== strpos($arr['extra'], 'Using filesort')) {
slog('Using filesort', 'error');
}
if (false !== strpos($arr['extra'], 'Using temporary')) {
slog('Using temporary', 'error');
}
}
});
}
],
....
`<?php
// +---------------------------------------------------------------------- // | 日志设置 // +----------------------------------------------------------------------
return [ // 默认日志记录通道 'default' => env( 'log.channel', 'socketlog'), // 日志记录级别 'level' => [], // 日志类型记录的通道 ['error'=>'email',...] 'type_channel' => [], // 关闭全局日志写入 'close' => false, // 全局日志处理 支持闭包 'processor' => null,
]; ` 我的是这样的,在网上找了很多资料,不管怎么改,就是不成功。只能来问问大家有在thinkphp6中使用成功的吗