feat: add logging module for backend + frontend error reporting

Backend:
- New Logger utility (app/utils/Logger.php) with category-based log files
  (connect/game/bet/error/frontend under runtime/log/)
- Log WebSocket connect/close events (WsConnect, WsClose)
- Log dealer auth success/failure (SpaceConnectService)
- Log all game events: startBet, endBet, changeBoot, opening for all 7 game types
- Log unhandled exceptions (ExceptionHandle)
- Separate SQL/error logs via apart_level, enable realtime_write for Swoole
- Add /log/report POST endpoint for frontend error ingestion

Frontend:
- New error-report.js with window.onerror + unhandledrejection auto-reporting
- Added to all 12 dealer HTML templates
- Bump VERSION_V to v10.1.0
This commit is contained in:
testadmin
2026-05-14 11:28:33 +08:00
parent 710bb45614
commit d77c6beac7
31 changed files with 168 additions and 7 deletions
@@ -11,6 +11,7 @@ use app\services\connect\InitTableService;
use freedom\utils\CardPositionTc;
use freedom\utils\RedisUtil;
use freedom\utils\SocketSession;
use app\utils\Logger;
use think\swoole\Websocket;
class OpeningTcService
@@ -26,6 +27,7 @@ class OpeningTcService
//判断结果并推送结果
$res = self::doOpening($event,$tableInfo);
if ($res['status'] == false){
Logger::warn(Logger::CAT_GAME, 'opening_tc_fail', ['table_id' => $tableInfo['id'], 'msg' => $res['msg']]);
$ws->emit('openingTc',['status' => false, 'msg' => $res['msg']]);
return;
}
@@ -41,6 +43,7 @@ class OpeningTcService
$round = array_merge($round,$data);
$ws->emit('openingTc',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
$ws->to(SocketSession::HOUSE_NAME)->emit('openingTcResult',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
Logger::info(Logger::CAT_GAME, 'opening_tc', ['table_id' => $tableInfo['id'], 'result_banker' => $data['result_banker'], 'win_p1' => $data['win_player_1'], 'win_p2' => $data['win_player_2'], 'win_p3' => $data['win_player_3']]);
//处理注单
self::doBet($ws,$tableInfo,$lastNumberTabInfo,$data);
}