{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.433851", "seconds": 0.433851}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:25:09.983125+08:00", "timestamp": 1750004709.983125}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.434226", "seconds": 0.434226}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:25:09.983500+08:00", "timestamp": 1750004709.9835}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.455481", "seconds": 0.455481}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:25:10.004755+08:00", "timestamp": 1750004710.004755}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.180974", "seconds": 1.180974}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 73, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:25:10.730248+08:00", "timestamp": 1750004710.730248}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.181441", "seconds": 1.181441}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 80, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:25:10.730715+08:00", "timestamp": 1750004710.730715}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.185176", "seconds": 1.185176}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:25:10.734450+08:00", "timestamp": 1750004710.73445}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.185391", "seconds": 1.185391}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:25:10.734665+08:00", "timestamp": 1750004710.734665}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:39.625372", "seconds": 99.625372}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47378}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 104, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:26:49.174646+08:00", "timestamp": 1750004809.174646}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:39.625923", "seconds": 99.625923}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47378}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:26:49.175197+08:00", "timestamp": 1750004809.175197}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:46.663736", "seconds": 106.663736}, "exception": null, "extra": {"name": "server.core", "username": "test", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 257, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173192713920, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:26:56.213010+08:00", "timestamp": 1750004816.21301}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:01:46.670839", "seconds": 106.670839}, "exception": null, "extra": {"name": "server.core", "username": "test", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 301, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173192713920, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:26:56.220113+08:00", "timestamp": 1750004816.220113}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:01:46.671305", "seconds": 106.671305}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "test", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173192713920, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:26:56.220579+08:00", "timestamp": 1750004816.220579}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:55.534218", "seconds": 115.534218}, "exception": null, "extra": {"name": "server.core", "username": "test", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 257, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173192713920, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:27:05.083492+08:00", "timestamp": 1750004825.083492}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:01:55.536270", "seconds": 115.53627}, "exception": null, "extra": {"name": "server.core", "username": "test", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 301, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173192713920, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:27:05.085544+08:00", "timestamp": 1750004825.085544}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:01:55.536638", "seconds": 115.536638}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "test", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173192713920, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:27:05.085912+08:00", "timestamp": 1750004825.085912}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:02:22.678620", "seconds": 142.67862}, "exception": null, "extra": {"name": "database", "user_id": 1, "username": "test"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 195, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173192713920, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:27:32.227894+08:00", "timestamp": 1750004852.227894}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:02:32.457083", "seconds": 152.457083}, "exception": null, "extra": {"name": "server.core", "username": "test", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 257, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173192713920, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:27:42.006357+08:00", "timestamp": 1750004862.006357}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:02:32.463569", "seconds": 152.463569}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173192713920, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:27:42.012843+08:00", "timestamp": 1750004862.012843}}}
{"text": "用户操作: test(1) - login\n", "record": {"elapsed": {"repr": "0:02:32.464291", "seconds": 152.464291}, "exception": null, "extra": {"user_id": 1, "username": "test", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173192713920, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:27:42.013565+08:00", "timestamp": 1750004862.013565}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:02:32.465280", "seconds": 152.46528}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173192713920, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:27:42.014554+08:00", "timestamp": 1750004862.014554}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:02:59.052661", "seconds": 179.052661}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46996}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 104, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:28:08.601935+08:00", "timestamp": 1750004888.601935}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:02:59.053561", "seconds": 179.053561}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 46996}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:28:08.602835+08:00", "timestamp": 1750004888.602835}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:03:18.149044", "seconds": 198.149044}, "exception": null, "extra": {"name": "database", "user_id": 2, "username": "test1"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 195, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:28:27.698318+08:00", "timestamp": 1750004907.698318}}}
{"text": "登录失败：密码格式不正确\n", "record": {"elapsed": {"repr": "0:03:23.237536", "seconds": 203.237536}, "exception": null, "extra": {"name": "server.core", "username": "test", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 251, "message": "登录失败：密码格式不正确", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:28:32.786810+08:00", "timestamp": 1750004912.78681}}}
{"text": "安全事件: invalid_password_format\n", "record": {"elapsed": {"repr": "0:03:23.238491", "seconds": 203.238491}, "exception": null, "extra": {"security": true, "event": "invalid_password_format", "username": "test", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: invalid_password_format", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:28:32.787765+08:00", "timestamp": 1750004912.787765}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:03:31.064131", "seconds": 211.064131}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 257, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:28:40.613405+08:00", "timestamp": 1750004920.613405}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:03:31.071362", "seconds": 211.071362}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:28:40.620636+08:00", "timestamp": 1750004920.620636}}}
{"text": "用户操作: test1(2) - login\n", "record": {"elapsed": {"repr": "0:03:31.072168", "seconds": 211.072168}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - login", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:28:40.621442+08:00", "timestamp": 1750004920.621442}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:03:31.072614", "seconds": 211.072614}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:28:40.621888+08:00", "timestamp": 1750004920.621888}}}
{"text": "用户操作: test1(2) - disconnect\n", "record": {"elapsed": {"repr": "0:04:23.184587", "seconds": 263.184587}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:29:32.733861+08:00", "timestamp": 1750004972.733861}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:04:23.192608", "seconds": 263.192608}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46996}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 184, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:29:32.741882+08:00", "timestamp": 1750004972.741882}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:04:23.193062", "seconds": 263.193062}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:29:32.742336+08:00", "timestamp": 1750004972.742336}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:06:17.925060", "seconds": 377.92506}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47438}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 104, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:31:27.474334+08:00", "timestamp": 1750005087.474334}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:06:17.926291", "seconds": 377.926291}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47438}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:31:27.475565+08:00", "timestamp": 1750005087.475565}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:06:18.912374", "seconds": 378.912374}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47438}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 184, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-16 00:31:28.461648+08:00", "timestamp": 1750005088.461648}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:06:18.913202", "seconds": 378.913202}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-16 00:31:28.462476+08:00", "timestamp": 1750005088.462476}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:06:23.037974", "seconds": 383.037974}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47442}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 104, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:31:32.587248+08:00", "timestamp": 1750005092.587248}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:06:23.040711", "seconds": 383.040711}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47442}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173287073600, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:31:32.589985+08:00", "timestamp": 1750005092.589985}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:06:31.166493", "seconds": 391.166493}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 257, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-16 00:31:40.715767+08:00", "timestamp": 1750005100.715767}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:06:31.173660", "seconds": 391.17366}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-16 00:31:40.722934+08:00", "timestamp": 1750005100.722934}}}
{"text": "用户操作: test1(2) - login\n", "record": {"elapsed": {"repr": "0:06:31.174377", "seconds": 391.174377}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - login", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-16 00:31:40.723651+08:00", "timestamp": 1750005100.723651}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:06:31.176243", "seconds": 391.176243}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-16 00:31:40.725517+08:00", "timestamp": 1750005100.725517}}}
{"text": "用户操作: test1(2) - disconnect\n", "record": {"elapsed": {"repr": "0:20:13.392899", "seconds": 1213.392899}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-16 00:45:22.942173+08:00", "timestamp": 1750005922.942173}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:20:13.473340", "seconds": 1213.47334}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47442}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 184, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-16 00:45:23.022614+08:00", "timestamp": 1750005923.022614}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:20:13.475912", "seconds": 1213.475912}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 44600, "name": "MainProcess"}, "thread": {"id": 140173184304832, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-16 00:45:23.025186+08:00", "timestamp": 1750005923.025186}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.354249", "seconds": 0.354249}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 55595, "name": "MainProcess"}, "thread": {"id": 140562895091520, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:38.005440+08:00", "timestamp": 1750006418.00544}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.354555", "seconds": 0.354555}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 55595, "name": "MainProcess"}, "thread": {"id": 140562895091520, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:38.005746+08:00", "timestamp": 1750006418.005746}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.356591", "seconds": 0.356591}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 55595, "name": "MainProcess"}, "thread": {"id": 140562895091520, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:38.007782+08:00", "timestamp": 1750006418.007782}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.943322", "seconds": 0.943322}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 73, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 55595, "name": "MainProcess"}, "thread": {"id": 140562895091520, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:38.594513+08:00", "timestamp": 1750006418.594513}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.944251", "seconds": 0.944251}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 80, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 55595, "name": "MainProcess"}, "thread": {"id": 140562895091520, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:38.595442+08:00", "timestamp": 1750006418.595442}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:00.948428", "seconds": 0.948428}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 55595, "name": "MainProcess"}, "thread": {"id": 140562895091520, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:38.599619+08:00", "timestamp": 1750006418.599619}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:00.948722", "seconds": 0.948722}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 55595, "name": "MainProcess"}, "thread": {"id": 140562895091520, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:38.599913+08:00", "timestamp": 1750006418.599913}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.243580", "seconds": 0.24358}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 55686, "name": "MainProcess"}, "thread": {"id": 139927047833408, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:46.846598+08:00", "timestamp": 1750006426.846598}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.243895", "seconds": 0.243895}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 55686, "name": "MainProcess"}, "thread": {"id": 139927047833408, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:46.846913+08:00", "timestamp": 1750006426.846913}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.244579", "seconds": 0.244579}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 55686, "name": "MainProcess"}, "thread": {"id": 139927047833408, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:46.847597+08:00", "timestamp": 1750006426.847597}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.063163", "seconds": 1.063163}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 73, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 55686, "name": "MainProcess"}, "thread": {"id": 139927047833408, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:47.666181+08:00", "timestamp": 1750006427.666181}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.063960", "seconds": 1.06396}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 80, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 55686, "name": "MainProcess"}, "thread": {"id": 139927047833408, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:47.666978+08:00", "timestamp": 1750006427.666978}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.072831", "seconds": 1.072831}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 55686, "name": "MainProcess"}, "thread": {"id": 139927047833408, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:47.675849+08:00", "timestamp": 1750006427.675849}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.073153", "seconds": 1.073153}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 55686, "name": "MainProcess"}, "thread": {"id": 139927047833408, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:47.676171+08:00", "timestamp": 1750006427.676171}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:09.771691", "seconds": 9.771691}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48050}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 104, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 55686, "name": "MainProcess"}, "thread": {"id": 139927047833408, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:56.374709+08:00", "timestamp": 1750006436.374709}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:09.772000", "seconds": 9.772}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48050}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 55686, "name": "MainProcess"}, "thread": {"id": 139927047833408, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:53:56.375018+08:00", "timestamp": 1750006436.375018}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.258229", "seconds": 0.258229}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001286027072, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:54:11.559442+08:00", "timestamp": 1750006451.559442}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.258583", "seconds": 0.258583}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001286027072, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:54:11.559796+08:00", "timestamp": 1750006451.559796}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.277966", "seconds": 0.277966}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001286027072, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:54:11.579179+08:00", "timestamp": 1750006451.579179}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.112960", "seconds": 1.11296}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 73, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001286027072, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:54:12.414173+08:00", "timestamp": 1750006452.414173}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.114126", "seconds": 1.114126}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 80, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001286027072, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:54:12.415339+08:00", "timestamp": 1750006452.415339}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.120387", "seconds": 1.120387}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001286027072, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:54:12.421600+08:00", "timestamp": 1750006452.4216}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.121022", "seconds": 1.121022}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001286027072, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:54:12.422235+08:00", "timestamp": 1750006452.422235}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:07.147173", "seconds": 7.147173}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47336}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 104, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001286027072, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:54:18.448386+08:00", "timestamp": 1750006458.448386}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:07.147500", "seconds": 7.1475}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47336}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001286027072, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:54:18.448713+08:00", "timestamp": 1750006458.448713}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:00:44.949090", "seconds": 44.94909}, "exception": null, "extra": {"name": "database", "user_id": 1, "username": "test0"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 195, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:54:56.250303+08:00", "timestamp": 1750006496.250303}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:55.746267", "seconds": 55.746267}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 257, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:55:07.047480+08:00", "timestamp": 1750006507.04748}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:55.750596", "seconds": 55.750596}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:55:07.051809+08:00", "timestamp": 1750006507.051809}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:00:55.750959", "seconds": 55.750959}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:55:07.052172+08:00", "timestamp": 1750006507.052172}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:55.751404", "seconds": 55.751404}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:55:07.052617+08:00", "timestamp": 1750006507.052617}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:06.517224", "seconds": 66.517224}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46914}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 104, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001286027072, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:55:17.818437+08:00", "timestamp": 1750006517.818437}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:06.517635", "seconds": 66.517635}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 46914}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001286027072, "name": "MainThread"}, "time": {"repr": "2025-06-16 00:55:17.818848+08:00", "timestamp": 1750006517.818848}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:01:28.178344", "seconds": 88.178344}, "exception": null, "extra": {"name": "database", "user_id": 2, "username": "test1"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 195, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001183258304, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:55:39.479557+08:00", "timestamp": 1750006539.479557}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:34.507328", "seconds": 94.507328}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 257, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001183258304, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:55:45.808541+08:00", "timestamp": 1750006545.808541}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:34.515132", "seconds": 94.515132}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001183258304, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:55:45.816345+08:00", "timestamp": 1750006545.816345}}}
{"text": "用户操作: test1(2) - login\n", "record": {"elapsed": {"repr": "0:01:34.515588", "seconds": 94.515588}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - login", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001183258304, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:55:45.816801+08:00", "timestamp": 1750006545.816801}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:34.515928", "seconds": 94.515928}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001183258304, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 00:55:45.817141+08:00", "timestamp": 1750006545.817141}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:03:07.546657", "seconds": 187.546657}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 2, "message_length": 6}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 355, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:57:18.847870+08:00", "timestamp": 1750006638.84787}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:03:07.549585", "seconds": 187.549585}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 2, "message_length": 6}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:57:18.850798+08:00", "timestamp": 1750006638.850798}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:05:39.173098", "seconds": 339.173098}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 2, "message_length": 27}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 355, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:59:50.474311+08:00", "timestamp": 1750006790.474311}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:05:39.174675", "seconds": 339.174675}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 2, "message_length": 27}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:59:50.475888+08:00", "timestamp": 1750006790.475888}}}
{"text": "AI生成回复\n", "record": {"elapsed": {"repr": "0:05:40.101547", "seconds": 340.101547}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "chat_group_id": 2, "response_time": 0.921088695526123, "reply_length": 41}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 384, "message": "AI生成回复", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:59:51.402760+08:00", "timestamp": 1750006791.40276}}}
{"text": "AI操作: generate_reply - glm-4-flash\n", "record": {"elapsed": {"repr": "0:05:40.102272", "seconds": 340.102272}, "exception": null, "extra": {"ai": true, "operation": "generate_reply", "model": "glm-4-flash", "user_id": 1, "chat_group_id": 2, "response_time": 0.921088695526123}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_ai_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 236, "message": "AI操作: generate_reply - glm-4-flash", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 00:59:51.403485+08:00", "timestamp": 1750006791.403485}}}
{"text": "用户操作: test1(2) - disconnect\n", "record": {"elapsed": {"repr": "0:06:09.984779", "seconds": 369.984779}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001183258304, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 01:00:21.285992+08:00", "timestamp": 1750006821.285992}}}
{"text": "用户操作: test0(1) - disconnect\n", "record": {"elapsed": {"repr": "0:06:09.985805", "seconds": 369.985805}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 01:00:21.287018+08:00", "timestamp": 1750006821.287018}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:06:09.990371", "seconds": 369.990371}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47336}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 184, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 01:00:21.291584+08:00", "timestamp": 1750006821.291584}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:06:09.990751", "seconds": 369.990751}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001191667392, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 01:00:21.291964+08:00", "timestamp": 1750006821.291964}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:06:09.995497", "seconds": 369.995497}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46914}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 184, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001183258304, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 01:00:21.296710+08:00", "timestamp": 1750006821.29671}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:06:09.996136", "seconds": 369.996136}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 55894, "name": "MainProcess"}, "thread": {"id": 140001183258304, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 01:00:21.297349+08:00", "timestamp": 1750006821.297349}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.455169", "seconds": 0.455169}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:26:08.500628+08:00", "timestamp": 1750083968.500628}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.455474", "seconds": 0.455474}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:26:08.500933+08:00", "timestamp": 1750083968.500933}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.476713", "seconds": 0.476713}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:26:08.522172+08:00", "timestamp": 1750083968.522172}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.216119", "seconds": 1.216119}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 73, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:26:09.261578+08:00", "timestamp": 1750083969.261578}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.217355", "seconds": 1.217355}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 80, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:26:09.262814+08:00", "timestamp": 1750083969.262814}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.241366", "seconds": 1.241366}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:26:09.286825+08:00", "timestamp": 1750083969.286825}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.241863", "seconds": 1.241863}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:26:09.287322+08:00", "timestamp": 1750083969.287322}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:20.388312", "seconds": 20.388312}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46974}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 104, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:26:28.433771+08:00", "timestamp": 1750083988.433771}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:20.388684", "seconds": 20.388684}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 46974}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:26:28.434143+08:00", "timestamp": 1750083988.434143}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:00:34.925339", "seconds": 34.925339}, "exception": null, "extra": {"name": "database", "user_id": 1, "username": "test0"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 195, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955737196224, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 22:26:42.970798+08:00", "timestamp": 1750084002.970798}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:43.488895", "seconds": 43.488895}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 256, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955737196224, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 22:26:51.534354+08:00", "timestamp": 1750084011.534354}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:43.495879", "seconds": 43.495879}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 281, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955737196224, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 22:26:51.541338+08:00", "timestamp": 1750084011.541338}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:00:43.496310", "seconds": 43.49631}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955737196224, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 22:26:51.541769+08:00", "timestamp": 1750084011.541769}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:43.496682", "seconds": 43.496682}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955737196224, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 22:26:51.542141+08:00", "timestamp": 1750084011.542141}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:00:49.658083", "seconds": 49.658083}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 1, "message_length": 6}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 358, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955737196224, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 22:26:57.703542+08:00", "timestamp": 1750084017.703542}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:00:49.658538", "seconds": 49.658538}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 1, "message_length": 6}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955737196224, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 22:26:57.703997+08:00", "timestamp": 1750084017.703997}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:19.389386", "seconds": 79.389386}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46120}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 104, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:27:27.434845+08:00", "timestamp": 1750084047.434845}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:19.389817", "seconds": 79.389817}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 46120}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:27:27.435276+08:00", "timestamp": 1750084047.435276}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:01:21.746662", "seconds": 81.746662}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46120}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955728803520, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 22:27:29.792121+08:00", "timestamp": 1750084049.792121}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:01:21.747120", "seconds": 81.74712}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955728803520, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-16 22:27:29.792579+08:00", "timestamp": 1750084049.792579}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:28.013948", "seconds": 88.013948}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47682}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 104, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:27:36.059407+08:00", "timestamp": 1750084056.059407}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:28.014248", "seconds": 88.014248}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47682}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139956168992576, "name": "MainThread"}, "time": {"repr": "2025-06-16 22:27:36.059707+08:00", "timestamp": 1750084056.059707}}}
{"text": "登录失败：用户名格式不正确\n", "record": {"elapsed": {"repr": "0:01:34.443612", "seconds": 94.443612}, "exception": null, "extra": {"name": "server.core", "username": "s", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 243, "message": "登录失败：用户名格式不正确", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955728803520, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-16 22:27:42.489071+08:00", "timestamp": 1750084062.489071}}}
{"text": "安全事件: invalid_username_format\n", "record": {"elapsed": {"repr": "0:01:34.443987", "seconds": 94.443987}, "exception": null, "extra": {"security": true, "event": "invalid_username_format", "username": "s", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: invalid_username_format", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955728803520, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-16 22:27:42.489446+08:00", "timestamp": 1750084062.489446}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:01:49.144602", "seconds": 109.144602}, "exception": null, "extra": {"name": "database", "user_id": 2, "username": "test1"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 195, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955728803520, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-16 22:27:57.190061+08:00", "timestamp": 1750084077.190061}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:57.885094", "seconds": 117.885094}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 256, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955728803520, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-16 22:28:05.930553+08:00", "timestamp": 1750084085.930553}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:57.891400", "seconds": 117.8914}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 281, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955728803520, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-16 22:28:05.936859+08:00", "timestamp": 1750084085.936859}}}
{"text": "用户操作: test1(2) - login\n", "record": {"elapsed": {"repr": "0:01:57.891869", "seconds": 117.891869}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - login", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955728803520, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-16 22:28:05.937328+08:00", "timestamp": 1750084085.937328}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:57.892394", "seconds": 117.892394}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955728803520, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-16 22:28:05.937853+08:00", "timestamp": 1750084085.937853}}}
{"text": "用户操作: test0(1) - disconnect\n", "record": {"elapsed": {"repr": "0:04:33.728738", "seconds": 273.728738}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955737196224, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 22:30:41.774197+08:00", "timestamp": 1750084241.774197}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:04:33.751766", "seconds": 273.751766}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46974}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955737196224, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 22:30:41.797225+08:00", "timestamp": 1750084241.797225}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:04:33.752581", "seconds": 273.752581}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 43086, "name": "MainProcess"}, "thread": {"id": 139955737196224, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-16 22:30:41.798040+08:00", "timestamp": 1750084241.79804}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.367354", "seconds": 0.367354}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:21.970206+08:00", "timestamp": 1750129101.970206}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.367630", "seconds": 0.36763}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:21.970482+08:00", "timestamp": 1750129101.970482}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.373211", "seconds": 0.373211}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:21.976063+08:00", "timestamp": 1750129101.976063}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.156811", "seconds": 1.156811}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.759663+08:00", "timestamp": 1750129102.759663}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.157539", "seconds": 1.157539}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 92, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.760391+08:00", "timestamp": 1750129102.760391}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.159591", "seconds": 1.159591}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.762443+08:00", "timestamp": 1750129102.762443}}}
{"text": "当前迁移状态: {'users_has_is_banned': False, 'chat_groups_has_is_banned': False, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.161280", "seconds": 1.16128}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': False, 'chat_groups_has_is_banned': False, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.764132+08:00", "timestamp": 1750129102.764132}}}
{"text": "开始数据库迁移：添加管理员功能支持\n", "record": {"elapsed": {"repr": "0:00:01.161758", "seconds": 1.161758}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "migrate_to_admin_support", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "开始数据库迁移：添加管理员功能支持", "module": "migration", "name": "server.database.migration", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.764610+08:00", "timestamp": 1750129102.76461}}}
{"text": "添加列 users.is_banned\n", "record": {"elapsed": {"repr": "0:00:01.170355", "seconds": 1.170355}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "add_column_if_not_exists", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 56, "message": "添加列 users.is_banned", "module": "migration", "name": "server.database.migration", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.773207+08:00", "timestamp": 1750129102.773207}}}
{"text": "为users表添加is_banned字段\n", "record": {"elapsed": {"repr": "0:00:01.170774", "seconds": 1.170774}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "migrate_to_admin_support", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 67, "message": "为users表添加is_banned字段", "module": "migration", "name": "server.database.migration", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.773626+08:00", "timestamp": 1750129102.773626}}}
{"text": "添加列 chat_groups.is_banned\n", "record": {"elapsed": {"repr": "0:00:01.174410", "seconds": 1.17441}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "add_column_if_not_exists", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 56, "message": "添加列 chat_groups.is_banned", "module": "migration", "name": "server.database.migration", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.777262+08:00", "timestamp": 1750129102.777262}}}
{"text": "为chat_groups表添加is_banned字段\n", "record": {"elapsed": {"repr": "0:00:01.174677", "seconds": 1.174677}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "migrate_to_admin_support", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 71, "message": "为chat_groups表添加is_banned字段", "module": "migration", "name": "server.database.migration", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.777529+08:00", "timestamp": 1750129102.777529}}}
{"text": "管理员用户已存在，跳过创建\n", "record": {"elapsed": {"repr": "0:00:01.175168", "seconds": 1.175168}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "_create_admin_user_if_not_exists", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 90, "message": "管理员用户已存在，跳过创建", "module": "migration", "name": "server.database.migration", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.778020+08:00", "timestamp": 1750129102.77802}}}
{"text": "数据库迁移完成：管理员功能支持已添加\n", "record": {"elapsed": {"repr": "0:00:01.175371", "seconds": 1.175371}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "migrate_to_admin_support", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 76, "message": "数据库迁移完成：管理员功能支持已添加", "module": "migration", "name": "server.database.migration", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.778223+08:00", "timestamp": 1750129102.778223}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.182839", "seconds": 1.182839}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 103, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.785691+08:00", "timestamp": 1750129102.785691}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.183239", "seconds": 1.183239}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:58:22.786091+08:00", "timestamp": 1750129102.786091}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:50.262981", "seconds": 50.262981}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46968}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 116, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:59:11.865833+08:00", "timestamp": 1750129151.865833}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:50.263420", "seconds": 50.26342}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 46968}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:59:11.866272+08:00", "timestamp": 1750129151.866272}}}
{"text": "登录失败：密码格式不正确\n", "record": {"elapsed": {"repr": "0:00:56.924338", "seconds": 56.924338}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 264, "message": "登录失败：密码格式不正确", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957765920448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 10:59:18.527190+08:00", "timestamp": 1750129158.52719}}}
{"text": "安全事件: invalid_password_format\n", "record": {"elapsed": {"repr": "0:00:56.924768", "seconds": 56.924768}, "exception": null, "extra": {"security": true, "event": "invalid_password_format", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: invalid_password_format", "module": "logger", "name": "shared.logger", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957765920448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 10:59:18.527620+08:00", "timestamp": 1750129158.52762}}}
{"text": "登录失败：用户名格式不正确\n", "record": {"elapsed": {"repr": "0:01:04.040893", "seconds": 64.040893}, "exception": null, "extra": {"name": "server.core", "username": "1234qwer", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 257, "message": "登录失败：用户名格式不正确", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957765920448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 10:59:25.643745+08:00", "timestamp": 1750129165.643745}}}
{"text": "安全事件: invalid_username_format\n", "record": {"elapsed": {"repr": "0:01:04.041317", "seconds": 64.041317}, "exception": null, "extra": {"security": true, "event": "invalid_username_format", "username": "1234qwer", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: invalid_username_format", "module": "logger", "name": "shared.logger", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957765920448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 10:59:25.644169+08:00", "timestamp": 1750129165.644169}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:12.099922", "seconds": 72.099922}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957765920448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 10:59:33.702774+08:00", "timestamp": 1750129173.702774}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:12.105929", "seconds": 72.105929}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 295, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957765920448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 10:59:33.708781+08:00", "timestamp": 1750129173.708781}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:01:12.106394", "seconds": 72.106394}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957765920448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 10:59:33.709246+08:00", "timestamp": 1750129173.709246}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:12.106702", "seconds": 72.106702}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957765920448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 10:59:33.709554+08:00", "timestamp": 1750129173.709554}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:35.967320", "seconds": 95.96732}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48608}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 116, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:59:57.570172+08:00", "timestamp": 1750129197.570172}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:35.967606", "seconds": 95.967606}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48608}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957860280128, "name": "MainThread"}, "time": {"repr": "2025-06-17 10:59:57.570458+08:00", "timestamp": 1750129197.570458}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:50.266204", "seconds": 110.266204}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957280700096, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:00:11.869056+08:00", "timestamp": 1750129211.869056}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:01:50.267142", "seconds": 110.267142}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 317, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957280700096, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:00:11.869994+08:00", "timestamp": 1750129211.869994}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:01:50.267598", "seconds": 110.267598}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "Admin", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957280700096, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:00:11.870450+08:00", "timestamp": 1750129211.87045}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:03:39.964047", "seconds": 219.964047}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957280700096, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:02:01.566899+08:00", "timestamp": 1750129321.566899}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:03:39.971484", "seconds": 219.971484}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 295, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957280700096, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:02:01.574336+08:00", "timestamp": 1750129321.574336}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:03:39.971899", "seconds": 219.971899}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957280700096, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:02:01.574751+08:00", "timestamp": 1750129321.574751}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:03:39.972436", "seconds": 219.972436}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 11758, "name": "MainProcess"}, "thread": {"id": 139957280700096, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:02:01.575288+08:00", "timestamp": 1750129321.575288}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.443736", "seconds": 0.443736}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:17.966107+08:00", "timestamp": 1750130417.966107}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.444528", "seconds": 0.444528}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:17.966899+08:00", "timestamp": 1750130417.966899}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.448102", "seconds": 0.448102}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:17.970473+08:00", "timestamp": 1750130417.970473}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.316793", "seconds": 1.316793}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:18.839164+08:00", "timestamp": 1750130418.839164}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.317295", "seconds": 1.317295}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 92, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:18.839666+08:00", "timestamp": 1750130418.839666}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.318335", "seconds": 1.318335}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:18.840706+08:00", "timestamp": 1750130418.840706}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.319078", "seconds": 1.319078}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:18.841449+08:00", "timestamp": 1750130418.841449}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.319340", "seconds": 1.31934}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:18.841711+08:00", "timestamp": 1750130418.841711}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.327758", "seconds": 1.327758}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 103, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:18.850129+08:00", "timestamp": 1750130418.850129}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.328128", "seconds": 1.328128}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:18.850499+08:00", "timestamp": 1750130418.850499}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:11.281150", "seconds": 11.28115}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48332}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 116, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:28.803521+08:00", "timestamp": 1750130428.803521}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:11.281700", "seconds": 11.2817}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48332}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:28.804071+08:00", "timestamp": 1750130428.804071}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:17.368671", "seconds": 17.368671}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868545996480, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:20:34.891042+08:00", "timestamp": 1750130434.891042}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:17.370545", "seconds": 17.370545}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 295, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868545996480, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:20:34.892916+08:00", "timestamp": 1750130434.892916}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:00:17.370958", "seconds": 17.370958}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868545996480, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:20:34.893329+08:00", "timestamp": 1750130434.893329}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:17.371281", "seconds": 17.371281}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868545996480, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:20:34.893652+08:00", "timestamp": 1750130434.893652}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:25.657132", "seconds": 25.657132}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48558}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 116, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:43.179503+08:00", "timestamp": 1750130443.179503}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:25.657438", "seconds": 25.657438}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48558}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868847941440, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:20:43.179809+08:00", "timestamp": 1750130443.179809}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:35.181532", "seconds": 35.181532}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868537603776, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:20:52.703903+08:00", "timestamp": 1750130452.703903}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:35.183364", "seconds": 35.183364}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 295, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868537603776, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:20:52.705735+08:00", "timestamp": 1750130452.705735}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:00:35.183751", "seconds": 35.183751}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868537603776, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:20:52.706122+08:00", "timestamp": 1750130452.706122}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:35.184058", "seconds": 35.184058}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 17509, "name": "MainProcess"}, "thread": {"id": 139868537603776, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:20:52.706429+08:00", "timestamp": 1750130452.706429}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.415373", "seconds": 0.415373}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:37:45.747247+08:00", "timestamp": 1750131465.747247}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.415642", "seconds": 0.415642}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:37:45.747516+08:00", "timestamp": 1750131465.747516}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.418140", "seconds": 0.41814}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:37:45.750014+08:00", "timestamp": 1750131465.750014}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.110360", "seconds": 1.11036}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:37:46.442234+08:00", "timestamp": 1750131466.442234}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.111371", "seconds": 1.111371}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 92, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:37:46.443245+08:00", "timestamp": 1750131466.443245}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.112950", "seconds": 1.11295}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:37:46.444824+08:00", "timestamp": 1750131466.444824}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.114514", "seconds": 1.114514}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:37:46.446388+08:00", "timestamp": 1750131466.446388}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.115001", "seconds": 1.115001}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:37:46.446875+08:00", "timestamp": 1750131466.446875}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.125200", "seconds": 1.1252}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 103, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:37:46.457074+08:00", "timestamp": 1750131466.457074}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.125499", "seconds": 1.125499}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:37:46.457373+08:00", "timestamp": 1750131466.457373}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:15.108959", "seconds": 15.108959}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47118}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 116, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:38:00.440833+08:00", "timestamp": 1750131480.440833}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:15.109391", "seconds": 15.109391}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47118}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:38:00.441265+08:00", "timestamp": 1750131480.441265}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:27.068604", "seconds": 27.068604}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338551301824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:12.400478+08:00", "timestamp": 1750131492.400478}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:27.072161", "seconds": 27.072161}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 295, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338551301824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:12.404035+08:00", "timestamp": 1750131492.404035}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:00:27.072608", "seconds": 27.072608}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338551301824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:12.404482+08:00", "timestamp": 1750131492.404482}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:27.072944", "seconds": 27.072944}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338551301824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:12.404818+08:00", "timestamp": 1750131492.404818}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:39.844031", "seconds": 39.844031}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48752}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 116, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:38:25.175905+08:00", "timestamp": 1750131505.175905}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:39.844314", "seconds": 39.844314}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48752}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338714871616, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:38:25.176188+08:00", "timestamp": 1750131505.176188}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:47.076471", "seconds": 47.076471}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:32.408345+08:00", "timestamp": 1750131512.408345}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:00:47.079615", "seconds": 47.079615}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 317, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:32.411489+08:00", "timestamp": 1750131512.411489}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:00:47.080008", "seconds": 47.080008}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "test0", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:32.411882+08:00", "timestamp": 1750131512.411882}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:05.963764", "seconds": 65.963764}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:51.295638+08:00", "timestamp": 1750131531.295638}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:05.970702", "seconds": 65.970702}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 295, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:51.302576+08:00", "timestamp": 1750131531.302576}}}
{"text": "用户操作: test1(2) - login\n", "record": {"elapsed": {"repr": "0:01:05.971155", "seconds": 65.971155}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - login", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:51.303029+08:00", "timestamp": 1750131531.303029}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:05.971684", "seconds": 65.971684}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:51.303558+08:00", "timestamp": 1750131531.303558}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:01:13.751726", "seconds": 73.751726}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "chat_group_id": 1, "message_length": 6}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 380, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:59.083600+08:00", "timestamp": 1750131539.0836}}}
{"text": "用户操作: test1(2) - send_message\n", "record": {"elapsed": {"repr": "0:01:13.752308", "seconds": 73.752308}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "send_message", "chat_group_id": 1, "message_length": 6}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:38:59.084182+08:00", "timestamp": 1750131539.084182}}}
{"text": "用户操作: Admin(0) - disconnect\n", "record": {"elapsed": {"repr": "0:01:59.714539", "seconds": 119.714539}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338551301824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:39:45.046413+08:00", "timestamp": 1750131585.046413}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:01:59.715087", "seconds": 119.715087}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47118}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 195, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338551301824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:39:45.046961+08:00", "timestamp": 1750131585.046961}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:01:59.715349", "seconds": 119.715349}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338551301824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:39:45.047223+08:00", "timestamp": 1750131585.047223}}}
{"text": "用户操作: test1(2) - disconnect\n", "record": {"elapsed": {"repr": "0:02:10.225379", "seconds": 130.225379}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:39:55.557253+08:00", "timestamp": 1750131595.557253}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:02:10.232011", "seconds": 130.232011}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48752}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 195, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:39:55.563885+08:00", "timestamp": 1750131595.563885}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:02:10.232316", "seconds": 130.232316}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 21046, "name": "MainProcess"}, "thread": {"id": 140338542909120, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:39:55.564190+08:00", "timestamp": 1750131595.56419}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.393347", "seconds": 0.393347}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:31.175360+08:00", "timestamp": 1750131631.17536}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.393688", "seconds": 0.393688}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:31.175701+08:00", "timestamp": 1750131631.175701}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.417376", "seconds": 0.417376}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:31.199389+08:00", "timestamp": 1750131631.199389}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.198361", "seconds": 1.198361}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:31.980374+08:00", "timestamp": 1750131631.980374}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.199381", "seconds": 1.199381}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 92, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:31.981394+08:00", "timestamp": 1750131631.981394}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.202934", "seconds": 1.202934}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:31.984947+08:00", "timestamp": 1750131631.984947}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.204589", "seconds": 1.204589}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:31.986602+08:00", "timestamp": 1750131631.986602}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.205102", "seconds": 1.205102}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:31.987115+08:00", "timestamp": 1750131631.987115}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.217064", "seconds": 1.217064}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 103, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:31.999077+08:00", "timestamp": 1750131631.999077}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.217459", "seconds": 1.217459}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:31.999472+08:00", "timestamp": 1750131631.999472}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:10.711105", "seconds": 10.711105}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48848}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 116, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:41.493118+08:00", "timestamp": 1750131641.493118}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:10.711400", "seconds": 10.7114}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48848}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:40:41.493413+08:00", "timestamp": 1750131641.493413}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:20.027491", "seconds": 20.027491}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281832822464, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:40:50.809504+08:00", "timestamp": 1750131650.809504}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:20.031283", "seconds": 20.031283}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 295, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281832822464, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:40:50.813296+08:00", "timestamp": 1750131650.813296}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:00:20.031553", "seconds": 20.031553}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281832822464, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:40:50.813566+08:00", "timestamp": 1750131650.813566}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:20.031732", "seconds": 20.031732}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281832822464, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:40:50.813745+08:00", "timestamp": 1750131650.813745}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:33.668457", "seconds": 33.668457}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48658}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 116, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:41:04.450470+08:00", "timestamp": 1750131664.45047}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:33.668886", "seconds": 33.668886}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48658}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281927182144, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:41:04.450899+08:00", "timestamp": 1750131664.450899}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:00:45.323682", "seconds": 45.323682}, "exception": null, "extra": {"name": "database", "user_id": 1, "username": "test0"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 231, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281349404352, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:41:16.105695+08:00", "timestamp": 1750131676.105695}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:53.063791", "seconds": 53.063791}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281349404352, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:41:23.845804+08:00", "timestamp": 1750131683.845804}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:53.070239", "seconds": 53.070239}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 295, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281349404352, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:41:23.852252+08:00", "timestamp": 1750131683.852252}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:00:53.070683", "seconds": 53.070683}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281349404352, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:41:23.852696+08:00", "timestamp": 1750131683.852696}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:53.071028", "seconds": 53.071028}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 21876, "name": "MainProcess"}, "thread": {"id": 140281349404352, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:41:23.853041+08:00", "timestamp": 1750131683.853041}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.418120", "seconds": 0.41812}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:16.088086+08:00", "timestamp": 1750132396.088086}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.418417", "seconds": 0.418417}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:16.088383+08:00", "timestamp": 1750132396.088383}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.420863", "seconds": 0.420863}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:16.090829+08:00", "timestamp": 1750132396.090829}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.167056", "seconds": 1.167056}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:16.837022+08:00", "timestamp": 1750132396.837022}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.168217", "seconds": 1.168217}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 92, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:16.838183+08:00", "timestamp": 1750132396.838183}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.171019", "seconds": 1.171019}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:16.840985+08:00", "timestamp": 1750132396.840985}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.172756", "seconds": 1.172756}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:16.842722+08:00", "timestamp": 1750132396.842722}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.173295", "seconds": 1.173295}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:16.843261+08:00", "timestamp": 1750132396.843261}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.182300", "seconds": 1.1823}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 103, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:16.852266+08:00", "timestamp": 1750132396.852266}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.182701", "seconds": 1.182701}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:16.852667+08:00", "timestamp": 1750132396.852667}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:08.952688", "seconds": 8.952688}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47662}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 116, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:24.622654+08:00", "timestamp": 1750132404.622654}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:08.953065", "seconds": 8.953065}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47662}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:24.623031+08:00", "timestamp": 1750132404.623031}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:16.200576", "seconds": 16.200576}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48954}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 116, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:31.870542+08:00", "timestamp": 1750132411.870542}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:16.200845", "seconds": 16.200845}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48954}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 11:53:31.870811+08:00", "timestamp": 1750132411.870811}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:26.781846", "seconds": 26.781846}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:53:42.451812+08:00", "timestamp": 1750132422.451812}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:26.787722", "seconds": 26.787722}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 295, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:53:42.457688+08:00", "timestamp": 1750132422.457688}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:00:26.788151", "seconds": 26.788151}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:53:42.458117+08:00", "timestamp": 1750132422.458117}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:26.788472", "seconds": 26.788472}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:53:42.458438+08:00", "timestamp": 1750132422.458438}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:37.477851", "seconds": 37.477851}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:53:53.147817+08:00", "timestamp": 1750132433.147817}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:37.482470", "seconds": 37.48247}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 295, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:53:53.152436+08:00", "timestamp": 1750132433.152436}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:00:37.482873", "seconds": 37.482873}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:53:53.152839+08:00", "timestamp": 1750132433.152839}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:37.483349", "seconds": 37.483349}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:53:53.153315+08:00", "timestamp": 1750132433.153315}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:00:50.876078", "seconds": 50.876078}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 1, "message_length": 5}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 380, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:54:06.546044+08:00", "timestamp": 1750132446.546044}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:00:50.876528", "seconds": 50.876528}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 1, "message_length": 5}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:54:06.546494+08:00", "timestamp": 1750132446.546494}}}
{"text": "用户被禁言\n", "record": {"elapsed": {"repr": "0:01:21.824218", "seconds": 81.824218}, "exception": null, "extra": {"name": "database", "user_id": 1}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 543, "message": "用户被禁言", "module": "models", "name": "server.database.models", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:54:37.494184+08:00", "timestamp": 1750132477.494184}}}
{"text": "管理员操作成功: ban_user\n", "record": {"elapsed": {"repr": "0:01:21.826119", "seconds": 81.826119}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 1, "target_name": "test0", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:54:37.496085+08:00", "timestamp": 1750132477.496085}}}
{"text": "安全事件: admin_operation_ban_user\n", "record": {"elapsed": {"repr": "0:01:21.826512", "seconds": 81.826512}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_user", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 1, "target_name": "test0", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_user", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:54:37.496478+08:00", "timestamp": 1750132477.496478}}}
{"text": "管理员操作成功: list_banned\n", "record": {"elapsed": {"repr": "0:01:39.783481", "seconds": 99.783481}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "list_banned", "operator_id": 0, "operator_name": "Admin", "target_type": "system", "target_id": 0, "target_name": "banned_objects", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: list_banned", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:54:55.453447+08:00", "timestamp": 1750132495.453447}}}
{"text": "安全事件: admin_operation_list_banned\n", "record": {"elapsed": {"repr": "0:01:39.783993", "seconds": 99.783993}, "exception": null, "extra": {"security": true, "event": "admin_operation_list_banned", "operation": "list_banned", "operator_id": 0, "operator_name": "Admin", "target_type": "system", "target_id": 0, "target_name": "banned_objects", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_list_banned", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:54:55.453959+08:00", "timestamp": 1750132495.453959}}}
{"text": "用户解除禁言\n", "record": {"elapsed": {"repr": "0:01:54.728224", "seconds": 114.728224}, "exception": null, "extra": {"name": "database", "user_id": 1}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "unban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 557, "message": "用户解除禁言", "module": "models", "name": "server.database.models", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:55:10.398190+08:00", "timestamp": 1750132510.39819}}}
{"text": "管理员操作成功: unban_user\n", "record": {"elapsed": {"repr": "0:01:54.729155", "seconds": 114.729155}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 1, "target_name": "test0", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: unban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:55:10.399121+08:00", "timestamp": 1750132510.399121}}}
{"text": "安全事件: admin_operation_unban_user\n", "record": {"elapsed": {"repr": "0:01:54.729813", "seconds": 114.729813}, "exception": null, "extra": {"security": true, "event": "admin_operation_unban_user", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 1, "target_name": "test0", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_unban_user", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:55:10.399779+08:00", "timestamp": 1750132510.399779}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:02:03.128493", "seconds": 123.128493}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 1, "message_length": 7}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 380, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:55:18.798459+08:00", "timestamp": 1750132518.798459}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:02:03.128949", "seconds": 123.128949}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 1, "message_length": 7}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:55:18.798915+08:00", "timestamp": 1750132518.798915}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:02:04.654779", "seconds": 124.654779}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 1, "message_length": 1}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 380, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:55:20.324745+08:00", "timestamp": 1750132520.324745}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:02:04.655228", "seconds": 124.655228}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 1, "message_length": 1}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 11:55:20.325194+08:00", "timestamp": 1750132520.325194}}}
{"text": "开始发送文件数据\n", "record": {"elapsed": {"repr": "0:03:50.739599", "seconds": 230.739599}, "exception": null, "extra": {"name": "server.core", "filename": "README.md", "file_size": 20011}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_file_download_request", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 910, "message": "开始发送文件数据", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:57:06.409565+08:00", "timestamp": 1750132626.409565}}}
{"text": "文件操作: send_start - README.md\n", "record": {"elapsed": {"repr": "0:03:50.742131", "seconds": 230.742131}, "exception": null, "extra": {"file": true, "operation": "send_start", "filename": "README.md", "file_size": 20011}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: send_start - README.md", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:57:06.412097+08:00", "timestamp": 1750132626.412097}}}
{"text": "物理文件已删除: server/data/files/1/c53ba80628fb4f16a4e8ff007745939e_README.md\n", "record": {"elapsed": {"repr": "0:04:13.245309", "seconds": 253.245309}, "exception": null, "extra": {"name": "database"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "delete_file", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 749, "message": "物理文件已删除: server/data/files/1/c53ba80628fb4f16a4e8ff007745939e_README.md", "module": "models", "name": "server.database.models", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:57:28.915275+08:00", "timestamp": 1750132648.915275}}}
{"text": "文件被删除\n", "record": {"elapsed": {"repr": "0:04:13.245680", "seconds": 253.24568}, "exception": null, "extra": {"name": "database", "file_id": 1, "filename": "README.md"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "delete_file", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 757, "message": "文件被删除", "module": "models", "name": "server.database.models", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:57:28.915646+08:00", "timestamp": 1750132648.915646}}}
{"text": "管理员操作成功: delete_file\n", "record": {"elapsed": {"repr": "0:04:13.246963", "seconds": 253.246963}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "delete_file", "operator_id": 0, "operator_name": "Admin", "target_type": "file", "target_id": 1, "target_name": "README.md", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: delete_file", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:57:28.916929+08:00", "timestamp": 1750132648.916929}}}
{"text": "安全事件: admin_operation_delete_file\n", "record": {"elapsed": {"repr": "0:04:13.247202", "seconds": 253.247202}, "exception": null, "extra": {"security": true, "event": "admin_operation_delete_file", "operation": "delete_file", "operator_id": 0, "operator_name": "Admin", "target_type": "file", "target_id": 1, "target_name": "README.md", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_delete_file", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:57:28.917168+08:00", "timestamp": 1750132648.917168}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:04:46.768696", "seconds": 286.768696}, "exception": null, "extra": {"name": "database", "user_id": 2, "username": "test1"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 231, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:58:02.438662+08:00", "timestamp": 1750132682.438662}}}
{"text": "管理员创建用户\n", "record": {"elapsed": {"repr": "0:04:46.771943", "seconds": 286.771943}, "exception": null, "extra": {"name": "database", "user_id": 2, "username": "test1"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user_interactive", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 784, "message": "管理员创建用户", "module": "models", "name": "server.database.models", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:58:02.441909+08:00", "timestamp": 1750132682.441909}}}
{"text": "管理员操作成功: add_user\n", "record": {"elapsed": {"repr": "0:04:46.772643", "seconds": 286.772643}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "add_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: add_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:58:02.442609+08:00", "timestamp": 1750132682.442609}}}
{"text": "安全事件: admin_operation_add_user\n", "record": {"elapsed": {"repr": "0:04:46.773213", "seconds": 286.773213}, "exception": null, "extra": {"security": true, "event": "admin_operation_add_user", "operation": "add_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_add_user", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:58:02.443179+08:00", "timestamp": 1750132682.443179}}}
{"text": "用户被删除\n", "record": {"elapsed": {"repr": "0:05:05.140901", "seconds": 305.140901}, "exception": null, "extra": {"name": "database", "user_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "delete_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 626, "message": "用户被删除", "module": "models", "name": "server.database.models", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:58:20.810867+08:00", "timestamp": 1750132700.810867}}}
{"text": "管理员操作成功: delete_user\n", "record": {"elapsed": {"repr": "0:05:05.142173", "seconds": 305.142173}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "delete_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: delete_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:58:20.812139+08:00", "timestamp": 1750132700.812139}}}
{"text": "安全事件: admin_operation_delete_user\n", "record": {"elapsed": {"repr": "0:05:05.142818", "seconds": 305.142818}, "exception": null, "extra": {"security": true, "event": "admin_operation_delete_user", "operation": "delete_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_delete_user", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 11:58:20.812784+08:00", "timestamp": 1750132700.812784}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:07:19.938356", "seconds": 439.938356}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48838}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 116, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:00:35.608322+08:00", "timestamp": 1750132835.608322}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:07:19.977926", "seconds": 439.977926}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48838}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139992118867776, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:00:35.647892+08:00", "timestamp": 1750132835.647892}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:07:50.328197", "seconds": 470.328197}, "exception": null, "extra": {"name": "database", "user_id": 3, "username": "test1"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 231, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:01:05.998163+08:00", "timestamp": 1750132865.998163}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:08:06.107284", "seconds": 486.107284}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 270, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:01:21.777250+08:00", "timestamp": 1750132881.77725}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:08:06.116990", "seconds": 486.11699}, "exception": null, "extra": {"name": "server.core", "user_id": 3, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 295, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:01:21.786956+08:00", "timestamp": 1750132881.786956}}}
{"text": "用户操作: test1(3) - login\n", "record": {"elapsed": {"repr": "0:08:06.118006", "seconds": 486.118006}, "exception": null, "extra": {"user_id": 3, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(3) - login", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:01:21.787972+08:00", "timestamp": 1750132881.787972}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:08:06.119753", "seconds": 486.119753}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 3, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:01:21.789719+08:00", "timestamp": 1750132881.789719}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:08:36.696816", "seconds": 516.696816}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 2, "message_length": 6}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 380, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:01:52.366782+08:00", "timestamp": 1750132912.366782}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:08:36.697619", "seconds": 516.697619}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 2, "message_length": 6}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991816586944, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:01:52.367585+08:00", "timestamp": 1750132912.367585}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:08:44.813885", "seconds": 524.813885}, "exception": null, "extra": {"name": "server.core", "user_id": 3, "username": "test1", "chat_group_id": 1, "message_length": 7}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 380, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:02:00.483851+08:00", "timestamp": 1750132920.483851}}}
{"text": "用户操作: test1(3) - send_message\n", "record": {"elapsed": {"repr": "0:08:44.815577", "seconds": 524.815577}, "exception": null, "extra": {"user_id": 3, "username": "test1", "action": "send_message", "chat_group_id": 1, "message_length": 7}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(3) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:02:00.485543+08:00", "timestamp": 1750132920.485543}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:09:03.908501", "seconds": 543.908501}, "exception": null, "extra": {"name": "server.core", "user_id": 3, "username": "test1", "chat_group_id": 2, "message_length": 10}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 380, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:02:19.578467+08:00", "timestamp": 1750132939.578467}}}
{"text": "用户操作: test1(3) - send_message\n", "record": {"elapsed": {"repr": "0:09:03.908984", "seconds": 543.908984}, "exception": null, "extra": {"user_id": 3, "username": "test1", "action": "send_message", "chat_group_id": 2, "message_length": 10}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(3) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:02:19.578950+08:00", "timestamp": 1750132939.57895}}}
{"text": "AI生成回复\n", "record": {"elapsed": {"repr": "0:09:05.359473", "seconds": 545.359473}, "exception": null, "extra": {"name": "server.core", "user_id": 3, "chat_group_id": 2, "response_time": 1.4431955814361572, "reply_length": 50}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 409, "message": "AI生成回复", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:02:21.029439+08:00", "timestamp": 1750132941.029439}}}
{"text": "AI操作: generate_reply - glm-4-flash\n", "record": {"elapsed": {"repr": "0:09:05.359946", "seconds": 545.359946}, "exception": null, "extra": {"ai": true, "operation": "generate_reply", "model": "glm-4-flash", "user_id": 3, "chat_group_id": 2, "response_time": 1.4431955814361572}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_ai_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 236, "message": "AI操作: generate_reply - glm-4-flash", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:02:21.029912+08:00", "timestamp": 1750132941.029912}}}
{"text": "聊天组被禁言\n", "record": {"elapsed": {"repr": "0:09:46.329597", "seconds": 586.329597}, "exception": null, "extra": {"name": "database", "group_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 582, "message": "聊天组被禁言", "module": "models", "name": "server.database.models", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:03:01.999563+08:00", "timestamp": 1750132981.999563}}}
{"text": "管理员操作成功: ban_group\n", "record": {"elapsed": {"repr": "0:09:46.332366", "seconds": 586.332366}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:03:02.002332+08:00", "timestamp": 1750132982.002332}}}
{"text": "安全事件: admin_operation_ban_group\n", "record": {"elapsed": {"repr": "0:09:46.333510", "seconds": 586.33351}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_group", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_group", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:03:02.003476+08:00", "timestamp": 1750132982.003476}}}
{"text": "聊天组解除禁言\n", "record": {"elapsed": {"repr": "0:10:17.421967", "seconds": 617.421967}, "exception": null, "extra": {"name": "database", "group_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "unban_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 596, "message": "聊天组解除禁言", "module": "models", "name": "server.database.models", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:03:33.091933+08:00", "timestamp": 1750133013.091933}}}
{"text": "管理员操作成功: unban_group\n", "record": {"elapsed": {"repr": "0:10:17.423056", "seconds": 617.423056}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "unban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: unban_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:03:33.093022+08:00", "timestamp": 1750133013.093022}}}
{"text": "安全事件: admin_operation_unban_group\n", "record": {"elapsed": {"repr": "0:10:17.423868", "seconds": 617.423868}, "exception": null, "extra": {"security": true, "event": "admin_operation_unban_group", "operation": "unban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_unban_group", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991808194240, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:03:33.093834+08:00", "timestamp": 1750133013.093834}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:10:24.649936", "seconds": 624.649936}, "exception": null, "extra": {"name": "server.core", "user_id": 3, "username": "test1", "chat_group_id": 2, "message_length": 5}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 380, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:03:40.319902+08:00", "timestamp": 1750133020.319902}}}
{"text": "用户操作: test1(3) - send_message\n", "record": {"elapsed": {"repr": "0:10:24.651970", "seconds": 624.65197}, "exception": null, "extra": {"user_id": 3, "username": "test1", "action": "send_message", "chat_group_id": 2, "message_length": 5}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(3) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:03:40.321936+08:00", "timestamp": 1750133020.321936}}}
{"text": "AI生成回复\n", "record": {"elapsed": {"repr": "0:10:26.519967", "seconds": 626.519967}, "exception": null, "extra": {"name": "server.core", "user_id": 3, "chat_group_id": 2, "response_time": 1.8600425720214844, "reply_length": 38}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 409, "message": "AI生成回复", "module": "server", "name": "server.core.server", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:03:42.189933+08:00", "timestamp": 1750133022.189933}}}
{"text": "AI操作: generate_reply - glm-4-flash\n", "record": {"elapsed": {"repr": "0:10:26.520310", "seconds": 626.52031}, "exception": null, "extra": {"ai": true, "operation": "generate_reply", "model": "glm-4-flash", "user_id": 3, "chat_group_id": 2, "response_time": 1.8600425720214844}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_ai_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 236, "message": "AI操作: generate_reply - glm-4-flash", "module": "logger", "name": "shared.logger", "process": {"id": 24486, "name": "MainProcess"}, "thread": {"id": 139991799801536, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:03:42.190276+08:00", "timestamp": 1750133022.190276}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.427248", "seconds": 0.427248}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:19:42.407195+08:00", "timestamp": 1750133982.407195}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.427581", "seconds": 0.427581}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:19:42.407528+08:00", "timestamp": 1750133982.407528}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.430454", "seconds": 0.430454}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:19:42.410401+08:00", "timestamp": 1750133982.410401}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.244878", "seconds": 1.244878}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:19:43.224825+08:00", "timestamp": 1750133983.224825}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.245249", "seconds": 1.245249}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:19:43.225196+08:00", "timestamp": 1750133983.225196}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.246198", "seconds": 1.246198}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:19:43.226145+08:00", "timestamp": 1750133983.226145}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.246930", "seconds": 1.24693}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:19:43.226877+08:00", "timestamp": 1750133983.226877}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.247148", "seconds": 1.247148}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:19:43.227095+08:00", "timestamp": 1750133983.227095}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.250304", "seconds": 1.250304}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 102, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:19:43.230251+08:00", "timestamp": 1750133983.230251}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.250512", "seconds": 1.250512}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:19:43.230459+08:00", "timestamp": 1750133983.230459}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:30.486362", "seconds": 90.486362}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46984}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:21:12.466309+08:00", "timestamp": 1750134072.466309}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:30.486800", "seconds": 90.4868}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 46984}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:21:12.466747+08:00", "timestamp": 1750134072.466747}}}
{"text": "登录失败：密码格式不正确\n", "record": {"elapsed": {"repr": "0:01:39.346719", "seconds": 99.346719}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 258, "message": "登录失败：密码格式不正确", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:21:21.326666+08:00", "timestamp": 1750134081.326666}}}
{"text": "安全事件: invalid_password_format\n", "record": {"elapsed": {"repr": "0:01:39.347191", "seconds": 99.347191}, "exception": null, "extra": {"security": true, "event": "invalid_password_format", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: invalid_password_format", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:21:21.327138+08:00", "timestamp": 1750134081.327138}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:53.084260", "seconds": 113.08426}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:21:35.064207+08:00", "timestamp": 1750134095.064207}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:53.089092", "seconds": 113.089092}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:21:35.069039+08:00", "timestamp": 1750134095.069039}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:01:53.089456", "seconds": 113.089456}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:21:35.069403+08:00", "timestamp": 1750134095.069403}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:53.089845", "seconds": 113.089845}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:21:35.069792+08:00", "timestamp": 1750134095.069792}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:56.993265", "seconds": 116.993265}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48536}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:21:38.973212+08:00", "timestamp": 1750134098.973212}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:56.993541", "seconds": 116.993541}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48536}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:21:38.973488+08:00", "timestamp": 1750134098.973488}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:02:01.013913", "seconds": 121.013913}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48594}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:21:42.993860+08:00", "timestamp": 1750134102.99386}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:02:01.014200", "seconds": 121.0142}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48594}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:21:42.994147+08:00", "timestamp": 1750134102.994147}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:02:11.138093", "seconds": 131.138093}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564590741184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:21:53.118040+08:00", "timestamp": 1750134113.11804}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:02:11.139960", "seconds": 131.13996}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564590741184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:21:53.119907+08:00", "timestamp": 1750134113.119907}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:02:11.140422", "seconds": 131.140422}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564590741184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:21:53.120369+08:00", "timestamp": 1750134113.120369}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:02:11.141070", "seconds": 131.14107}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564590741184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:21:53.121017+08:00", "timestamp": 1750134113.121017}}}
{"text": "登录失败：用户名格式不正确\n", "record": {"elapsed": {"repr": "0:02:21.074808", "seconds": 141.074808}, "exception": null, "extra": {"name": "server.core", "username": "test`", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 251, "message": "登录失败：用户名格式不正确", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564582348480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:22:03.054755+08:00", "timestamp": 1750134123.054755}}}
{"text": "安全事件: invalid_username_format\n", "record": {"elapsed": {"repr": "0:02:21.075249", "seconds": 141.075249}, "exception": null, "extra": {"security": true, "event": "invalid_username_format", "username": "test`", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: invalid_username_format", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564582348480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:22:03.055196+08:00", "timestamp": 1750134123.055196}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:02:30.434814", "seconds": 150.434814}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564582348480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:22:12.414761+08:00", "timestamp": 1750134132.414761}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:02:30.435891", "seconds": 150.435891}, "exception": null, "extra": {"name": "server.core", "user_id": 3, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564582348480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:22:12.415838+08:00", "timestamp": 1750134132.415838}}}
{"text": "用户操作: test1(3) - login\n", "record": {"elapsed": {"repr": "0:02:30.436139", "seconds": 150.436139}, "exception": null, "extra": {"user_id": 3, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(3) - login", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564582348480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:22:12.416086+08:00", "timestamp": 1750134132.416086}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:02:30.436322", "seconds": 150.436322}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 3, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564582348480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:22:12.416269+08:00", "timestamp": 1750134132.416269}}}
{"text": "聊天组被删除\n", "record": {"elapsed": {"repr": "0:02:44.848508", "seconds": 164.848508}, "exception": null, "extra": {"name": "database", "group_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "delete_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 645, "message": "聊天组被删除", "module": "models", "name": "server.database.models", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:22:26.828455+08:00", "timestamp": 1750134146.828455}}}
{"text": "管理员操作成功: delete_group\n", "record": {"elapsed": {"repr": "0:02:44.849505", "seconds": 164.849505}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "delete_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: delete_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:22:26.829452+08:00", "timestamp": 1750134146.829452}}}
{"text": "安全事件: admin_operation_delete_group\n", "record": {"elapsed": {"repr": "0:02:44.849882", "seconds": 164.849882}, "exception": null, "extra": {"security": true, "event": "admin_operation_delete_group", "operation": "delete_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_delete_group", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:22:26.829829+08:00", "timestamp": 1750134146.829829}}}
{"text": "用户被禁言\n", "record": {"elapsed": {"repr": "0:03:56.539209", "seconds": 236.539209}, "exception": null, "extra": {"name": "database", "user_id": 3}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 543, "message": "用户被禁言", "module": "models", "name": "server.database.models", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:23:38.519156+08:00", "timestamp": 1750134218.519156}}}
{"text": "管理员操作成功: ban_user\n", "record": {"elapsed": {"repr": "0:03:56.543407", "seconds": 236.543407}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 3, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:23:38.523354+08:00", "timestamp": 1750134218.523354}}}
{"text": "安全事件: admin_operation_ban_user\n", "record": {"elapsed": {"repr": "0:03:56.543819", "seconds": 236.543819}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_user", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 3, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_user", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:23:38.523766+08:00", "timestamp": 1750134218.523766}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:04:14.359055", "seconds": 254.359055}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 3, "message_length": 6}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 374, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564590741184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:23:56.339002+08:00", "timestamp": 1750134236.339002}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:04:14.359656", "seconds": 254.359656}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 3, "message_length": 6}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564590741184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:23:56.339603+08:00", "timestamp": 1750134236.339603}}}
{"text": "聊天组被禁言\n", "record": {"elapsed": {"repr": "0:05:00.747903", "seconds": 300.747903}, "exception": null, "extra": {"name": "database", "group_id": 3}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 582, "message": "聊天组被禁言", "module": "models", "name": "server.database.models", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:24:42.727850+08:00", "timestamp": 1750134282.72785}}}
{"text": "管理员操作成功: ban_group\n", "record": {"elapsed": {"repr": "0:05:00.751170", "seconds": 300.75117}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 3, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:24:42.731117+08:00", "timestamp": 1750134282.731117}}}
{"text": "安全事件: admin_operation_ban_group\n", "record": {"elapsed": {"repr": "0:05:00.752243", "seconds": 300.752243}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_group", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 3, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_group", "module": "logger", "name": "shared.logger", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564599133888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:24:42.732190+08:00", "timestamp": 1750134282.73219}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:05:28.461002", "seconds": 328.461002}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:25:10.440949+08:00", "timestamp": 1750134310.440949}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:05:28.465844", "seconds": 328.465844}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 30266, "name": "MainProcess"}, "thread": {"id": 140564899583808, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:25:10.445791+08:00", "timestamp": 1750134310.445791}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.414981", "seconds": 0.414981}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:42:53.133945+08:00", "timestamp": 1750135373.133945}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.415284", "seconds": 0.415284}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:42:53.134248+08:00", "timestamp": 1750135373.134248}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.417968", "seconds": 0.417968}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:42:53.136932+08:00", "timestamp": 1750135373.136932}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:02.751534", "seconds": 2.751534}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:42:55.470498+08:00", "timestamp": 1750135375.470498}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:02.752250", "seconds": 2.75225}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:42:55.471214+08:00", "timestamp": 1750135375.471214}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:02.754377", "seconds": 2.754377}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:42:55.473341+08:00", "timestamp": 1750135375.473341}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:02.756110", "seconds": 2.75611}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:42:55.475074+08:00", "timestamp": 1750135375.475074}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:02.756572", "seconds": 2.756572}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:42:55.475536+08:00", "timestamp": 1750135375.475536}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:02.765067", "seconds": 2.765067}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 102, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:42:55.484031+08:00", "timestamp": 1750135375.484031}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:02.765400", "seconds": 2.7654}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:42:55.484364+08:00", "timestamp": 1750135375.484364}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:08.691652", "seconds": 8.691652}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47782}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:43:01.410616+08:00", "timestamp": 1750135381.410616}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:08.692152", "seconds": 8.692152}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47782}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:43:01.411116+08:00", "timestamp": 1750135381.411116}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:12.228794", "seconds": 12.228794}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47260}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:43:04.947758+08:00", "timestamp": 1750135384.947758}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:12.229092", "seconds": 12.229092}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47260}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:43:04.948056+08:00", "timestamp": 1750135384.948056}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:20.578813", "seconds": 20.578813}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47718}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:43:13.297777+08:00", "timestamp": 1750135393.297777}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:20.579237", "seconds": 20.579237}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47718}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 12:43:13.298201+08:00", "timestamp": 1750135393.298201}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:31.045927", "seconds": 31.045927}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427612108480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:43:23.764891+08:00", "timestamp": 1750135403.764891}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:31.050775", "seconds": 31.050775}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427612108480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:43:23.769739+08:00", "timestamp": 1750135403.769739}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:00:31.051052", "seconds": 31.051052}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427612108480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:43:23.770016+08:00", "timestamp": 1750135403.770016}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:31.051272", "seconds": 31.051272}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427612108480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 12:43:23.770236+08:00", "timestamp": 1750135403.770236}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:17.690001", "seconds": 77.690001}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427620501184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:44:10.408965+08:00", "timestamp": 1750135450.408965}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:17.694692", "seconds": 77.694692}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427620501184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:44:10.413656+08:00", "timestamp": 1750135450.413656}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:01:17.695114", "seconds": 77.695114}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427620501184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:44:10.414078+08:00", "timestamp": 1750135450.414078}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:17.695429", "seconds": 77.695429}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427620501184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 12:44:10.414393+08:00", "timestamp": 1750135450.414393}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:27.938393", "seconds": 87.938393}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427628893888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:44:20.657357+08:00", "timestamp": 1750135460.657357}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:27.940707", "seconds": 87.940707}, "exception": null, "extra": {"name": "server.core", "user_id": 3, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427628893888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:44:20.659671+08:00", "timestamp": 1750135460.659671}}}
{"text": "用户操作: test1(3) - login\n", "record": {"elapsed": {"repr": "0:01:27.941111", "seconds": 87.941111}, "exception": null, "extra": {"user_id": 3, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(3) - login", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427628893888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:44:20.660075+08:00", "timestamp": 1750135460.660075}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:27.941699", "seconds": 87.941699}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 3, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427628893888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 12:44:20.660663+08:00", "timestamp": 1750135460.660663}}}
{"text": "用户操作: test1(3) - disconnect\n", "record": {"elapsed": {"repr": "2:33:16.367088", "seconds": 9196.367088}, "exception": null, "extra": {"user_id": 3, "username": "test1", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(3) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427628893888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:16:09.086052+08:00", "timestamp": 1750144569.086052}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "2:33:16.470790", "seconds": 9196.47079}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47782}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427628893888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:16:09.189754+08:00", "timestamp": 1750144569.189754}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "2:33:16.474574", "seconds": 9196.474574}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427628893888, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:16:09.193538+08:00", "timestamp": 1750144569.193538}}}
{"text": "用户操作: test0(1) - disconnect\n", "record": {"elapsed": {"repr": "2:33:20.039242", "seconds": 9200.039242}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427620501184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:16:12.758206+08:00", "timestamp": 1750144572.758206}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "2:33:20.049168", "seconds": 9200.049168}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47260}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427620501184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:16:12.768132+08:00", "timestamp": 1750144572.768132}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "2:33:20.049697", "seconds": 9200.049697}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427620501184, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:16:12.768661+08:00", "timestamp": 1750144572.768661}}}
{"text": "用户操作: Admin(0) - disconnect\n", "record": {"elapsed": {"repr": "2:33:26.979358", "seconds": 9206.979358}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427612108480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:16:19.698322+08:00", "timestamp": 1750144579.698322}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "2:33:26.981974", "seconds": 9206.981974}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47718}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427612108480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:16:19.700938+08:00", "timestamp": 1750144579.700938}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "2:33:26.982723", "seconds": 9206.982723}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427612108480, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:16:19.701687+08:00", "timestamp": 1750144579.701687}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "2:33:30.681209", "seconds": 9210.681209}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:16:23.400173+08:00", "timestamp": 1750144583.400173}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "2:33:30.688648", "seconds": 9210.688648}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 35087, "name": "MainProcess"}, "thread": {"id": 140427925100352, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:16:23.407612+08:00", "timestamp": 1750144583.407612}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.432343", "seconds": 0.432343}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:01.200818+08:00", "timestamp": 1750144621.200818}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.432648", "seconds": 0.432648}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:01.201123+08:00", "timestamp": 1750144621.201123}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.451936", "seconds": 0.451936}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:01.220411+08:00", "timestamp": 1750144621.220411}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.968219", "seconds": 1.968219}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:02.736694+08:00", "timestamp": 1750144622.736694}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.968709", "seconds": 1.968709}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:02.737184+08:00", "timestamp": 1750144622.737184}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.969673", "seconds": 1.969673}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:02.738148+08:00", "timestamp": 1750144622.738148}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.970358", "seconds": 1.970358}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:02.738833+08:00", "timestamp": 1750144622.738833}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.970577", "seconds": 1.970577}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:02.739052+08:00", "timestamp": 1750144622.739052}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.975104", "seconds": 1.975104}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 102, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:02.743579+08:00", "timestamp": 1750144622.743579}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.975326", "seconds": 1.975326}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:02.743801+08:00", "timestamp": 1750144622.743801}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:23.233952", "seconds": 23.233952}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48632}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:24.002427+08:00", "timestamp": 1750144644.002427}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:23.234325", "seconds": 23.234325}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48632}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:24.002800+08:00", "timestamp": 1750144644.0028}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:27.290182", "seconds": 27.290182}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47958}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:28.058657+08:00", "timestamp": 1750144648.058657}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:27.290456", "seconds": 27.290456}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47958}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:28.058931+08:00", "timestamp": 1750144648.058931}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:30.457820", "seconds": 30.45782}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47966}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:31.226295+08:00", "timestamp": 1750144651.226295}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:30.458115", "seconds": 30.458115}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47966}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:17:31.226590+08:00", "timestamp": 1750144651.22659}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:39.953836", "seconds": 39.953836}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:17:40.722311+08:00", "timestamp": 1750144660.722311}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:39.959594", "seconds": 39.959594}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:17:40.728069+08:00", "timestamp": 1750144660.728069}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:00:39.960004", "seconds": 39.960004}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:17:40.728479+08:00", "timestamp": 1750144660.728479}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:39.960586", "seconds": 39.960586}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:17:40.729061+08:00", "timestamp": 1750144660.729061}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:01:03.421711", "seconds": 63.421711}, "exception": null, "extra": {"name": "database", "user_id": 1, "username": "test0"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 231, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764795692736, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:04.190186+08:00", "timestamp": 1750144684.190186}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:12.684116", "seconds": 72.684116}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764795692736, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:13.452591+08:00", "timestamp": 1750144693.452591}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:12.690105", "seconds": 72.690105}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764795692736, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:13.458580+08:00", "timestamp": 1750144693.45858}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:01:12.690555", "seconds": 72.690555}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764795692736, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:13.459030+08:00", "timestamp": 1750144693.45903}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:12.691034", "seconds": 72.691034}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764795692736, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:13.459509+08:00", "timestamp": 1750144693.459509}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:01:35.662490", "seconds": 95.66249}, "exception": null, "extra": {"name": "database", "user_id": 2, "username": "test1"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 231, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:36.430965+08:00", "timestamp": 1750144716.430965}}}
{"text": "管理员创建用户\n", "record": {"elapsed": {"repr": "0:01:35.664147", "seconds": 95.664147}, "exception": null, "extra": {"name": "database", "user_id": 2, "username": "test1"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user_interactive", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 784, "message": "管理员创建用户", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:36.432622+08:00", "timestamp": 1750144716.432622}}}
{"text": "管理员操作成功: add_user\n", "record": {"elapsed": {"repr": "0:01:35.664874", "seconds": 95.664874}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "add_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: add_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:36.433349+08:00", "timestamp": 1750144716.433349}}}
{"text": "安全事件: admin_operation_add_user\n", "record": {"elapsed": {"repr": "0:01:35.665207", "seconds": 95.665207}, "exception": null, "extra": {"security": true, "event": "admin_operation_add_user", "operation": "add_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_add_user", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:36.433682+08:00", "timestamp": 1750144716.433682}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:51.742909", "seconds": 111.742909}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764787300032, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:52.511384+08:00", "timestamp": 1750144732.511384}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:51.749601", "seconds": 111.749601}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764787300032, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:52.518076+08:00", "timestamp": 1750144732.518076}}}
{"text": "用户操作: test1(2) - login\n", "record": {"elapsed": {"repr": "0:01:51.750049", "seconds": 111.750049}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - login", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764787300032, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:52.518524+08:00", "timestamp": 1750144732.518524}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:51.750655", "seconds": 111.750655}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764787300032, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:18:52.519130+08:00", "timestamp": 1750144732.51913}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:02:17.362595", "seconds": 137.362595}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 2, "message_length": 6}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 374, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764795692736, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:19:18.131070+08:00", "timestamp": 1750144758.13107}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:02:17.363176", "seconds": 137.363176}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 2, "message_length": 6}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764795692736, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:19:18.131651+08:00", "timestamp": 1750144758.131651}}}
{"text": "用户被禁言\n", "record": {"elapsed": {"repr": "0:03:01.082222", "seconds": 181.082222}, "exception": null, "extra": {"name": "database", "user_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 543, "message": "用户被禁言", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:20:01.850697+08:00", "timestamp": 1750144801.850697}}}
{"text": "管理员操作成功: ban_user\n", "record": {"elapsed": {"repr": "0:03:01.084254", "seconds": 181.084254}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:20:01.852729+08:00", "timestamp": 1750144801.852729}}}
{"text": "安全事件: admin_operation_ban_user\n", "record": {"elapsed": {"repr": "0:03:01.086732", "seconds": 181.086732}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_user", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_user", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:20:01.855207+08:00", "timestamp": 1750144801.855207}}}
{"text": "聊天组被禁言\n", "record": {"elapsed": {"repr": "0:04:27.157817", "seconds": 267.157817}, "exception": null, "extra": {"name": "database", "group_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 582, "message": "聊天组被禁言", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:21:27.926292+08:00", "timestamp": 1750144887.926292}}}
{"text": "管理员操作成功: ban_group\n", "record": {"elapsed": {"repr": "0:04:27.181545", "seconds": 267.181545}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:21:27.950020+08:00", "timestamp": 1750144887.95002}}}
{"text": "安全事件: admin_operation_ban_group\n", "record": {"elapsed": {"repr": "0:04:27.182329", "seconds": 267.182329}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_group", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_group", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:21:27.950804+08:00", "timestamp": 1750144887.950804}}}
{"text": "聊天组解除禁言\n", "record": {"elapsed": {"repr": "0:04:53.269067", "seconds": 293.269067}, "exception": null, "extra": {"name": "database", "group_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "unban_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 596, "message": "聊天组解除禁言", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:21:54.037542+08:00", "timestamp": 1750144914.037542}}}
{"text": "管理员操作成功: unban_group\n", "record": {"elapsed": {"repr": "0:04:53.270860", "seconds": 293.27086}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "unban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: unban_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:21:54.039335+08:00", "timestamp": 1750144914.039335}}}
{"text": "安全事件: admin_operation_unban_group\n", "record": {"elapsed": {"repr": "0:04:53.272354", "seconds": 293.272354}, "exception": null, "extra": {"security": true, "event": "admin_operation_unban_group", "operation": "unban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_unban_group", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:21:54.040829+08:00", "timestamp": 1750144914.040829}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:05:00.960177", "seconds": 300.960177}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 2, "message_length": 7}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 374, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764795692736, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:22:01.728652+08:00", "timestamp": 1750144921.728652}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:05:00.961687", "seconds": 300.961687}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 2, "message_length": 7}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764795692736, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:22:01.730162+08:00", "timestamp": 1750144921.730162}}}
{"text": "AI生成回复\n", "record": {"elapsed": {"repr": "0:05:03.911061", "seconds": 303.911061}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "chat_group_id": 2, "response_time": 2.938296318054199, "reply_length": 53}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 403, "message": "AI生成回复", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764795692736, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:22:04.679536+08:00", "timestamp": 1750144924.679536}}}
{"text": "AI操作: generate_reply - glm-4-flash\n", "record": {"elapsed": {"repr": "0:05:03.911793", "seconds": 303.911793}, "exception": null, "extra": {"ai": true, "operation": "generate_reply", "model": "glm-4-flash", "user_id": 1, "chat_group_id": 2, "response_time": 2.938296318054199}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_ai_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 236, "message": "AI操作: generate_reply - glm-4-flash", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764795692736, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:22:04.680268+08:00", "timestamp": 1750144924.680268}}}
{"text": "用户解除禁言\n", "record": {"elapsed": {"repr": "0:05:30.382663", "seconds": 330.382663}, "exception": null, "extra": {"name": "database", "user_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "unban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 557, "message": "用户解除禁言", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:22:31.151138+08:00", "timestamp": 1750144951.151138}}}
{"text": "管理员操作成功: unban_user\n", "record": {"elapsed": {"repr": "0:05:30.384837", "seconds": 330.384837}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: unban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:22:31.153312+08:00", "timestamp": 1750144951.153312}}}
{"text": "安全事件: admin_operation_unban_user\n", "record": {"elapsed": {"repr": "0:05:30.385082", "seconds": 330.385082}, "exception": null, "extra": {"security": true, "event": "admin_operation_unban_user", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_unban_user", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:22:31.153557+08:00", "timestamp": 1750144951.153557}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:05:36.009102", "seconds": 336.009102}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "chat_group_id": 2, "message_length": 4}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 374, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764787300032, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:22:36.777577+08:00", "timestamp": 1750144956.777577}}}
{"text": "用户操作: test1(2) - send_message\n", "record": {"elapsed": {"repr": "0:05:36.010034", "seconds": 336.010034}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "send_message", "chat_group_id": 2, "message_length": 4}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764787300032, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:22:36.778509+08:00", "timestamp": 1750144956.778509}}}
{"text": "开始发送文件数据\n", "record": {"elapsed": {"repr": "0:06:50.252345", "seconds": 410.252345}, "exception": null, "extra": {"name": "server.core", "filename": "README.md", "file_size": 20011}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_file_download_request", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 913, "message": "开始发送文件数据", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764787300032, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:23:51.020820+08:00", "timestamp": 1750145031.02082}}}
{"text": "文件操作: send_start - README.md\n", "record": {"elapsed": {"repr": "0:06:50.256125", "seconds": 410.256125}, "exception": null, "extra": {"file": true, "operation": "send_start", "filename": "README.md", "file_size": 20011}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: send_start - README.md", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764787300032, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:23:51.024600+08:00", "timestamp": 1750145031.0246}}}
{"text": "用户被禁言\n", "record": {"elapsed": {"repr": "0:08:04.755486", "seconds": 484.755486}, "exception": null, "extra": {"name": "database", "user_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 543, "message": "用户被禁言", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:05.523961+08:00", "timestamp": 1750145105.523961}}}
{"text": "管理员操作成功: ban_user\n", "record": {"elapsed": {"repr": "0:08:04.758267", "seconds": 484.758267}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:05.526742+08:00", "timestamp": 1750145105.526742}}}
{"text": "安全事件: admin_operation_ban_user\n", "record": {"elapsed": {"repr": "0:08:04.758787", "seconds": 484.758787}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_user", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_user", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:05.527262+08:00", "timestamp": 1750145105.527262}}}
{"text": "管理员操作成功: list_banned\n", "record": {"elapsed": {"repr": "0:08:09.192958", "seconds": 489.192958}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "list_banned", "operator_id": 0, "operator_name": "Admin", "target_type": "system", "target_id": 0, "target_name": "banned_objects", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: list_banned", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:09.961433+08:00", "timestamp": 1750145109.961433}}}
{"text": "安全事件: admin_operation_list_banned\n", "record": {"elapsed": {"repr": "0:08:09.194738", "seconds": 489.194738}, "exception": null, "extra": {"security": true, "event": "admin_operation_list_banned", "operation": "list_banned", "operator_id": 0, "operator_name": "Admin", "target_type": "system", "target_id": 0, "target_name": "banned_objects", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_list_banned", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:09.963213+08:00", "timestamp": 1750145109.963213}}}
{"text": "聊天组被禁言\n", "record": {"elapsed": {"repr": "0:08:16.309273", "seconds": 496.309273}, "exception": null, "extra": {"name": "database", "group_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 582, "message": "聊天组被禁言", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:17.077748+08:00", "timestamp": 1750145117.077748}}}
{"text": "管理员操作成功: ban_group\n", "record": {"elapsed": {"repr": "0:08:16.314035", "seconds": 496.314035}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:17.082510+08:00", "timestamp": 1750145117.08251}}}
{"text": "安全事件: admin_operation_ban_group\n", "record": {"elapsed": {"repr": "0:08:16.315055", "seconds": 496.315055}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_group", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_group", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:17.083530+08:00", "timestamp": 1750145117.08353}}}
{"text": "管理员操作成功: list_banned\n", "record": {"elapsed": {"repr": "0:08:20.581500", "seconds": 500.5815}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "list_banned", "operator_id": 0, "operator_name": "Admin", "target_type": "system", "target_id": 0, "target_name": "banned_objects", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: list_banned", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:21.349975+08:00", "timestamp": 1750145121.349975}}}
{"text": "安全事件: admin_operation_list_banned\n", "record": {"elapsed": {"repr": "0:08:20.581961", "seconds": 500.581961}, "exception": null, "extra": {"security": true, "event": "admin_operation_list_banned", "operation": "list_banned", "operator_id": 0, "operator_name": "Admin", "target_type": "system", "target_id": 0, "target_name": "banned_objects", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_list_banned", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:21.350436+08:00", "timestamp": 1750145121.350436}}}
{"text": "用户解除禁言\n", "record": {"elapsed": {"repr": "0:08:30.377938", "seconds": 510.377938}, "exception": null, "extra": {"name": "database", "user_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "unban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 557, "message": "用户解除禁言", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:31.146413+08:00", "timestamp": 1750145131.146413}}}
{"text": "管理员操作成功: unban_user\n", "record": {"elapsed": {"repr": "0:08:30.379113", "seconds": 510.379113}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: unban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:31.147588+08:00", "timestamp": 1750145131.147588}}}
{"text": "安全事件: admin_operation_unban_user\n", "record": {"elapsed": {"repr": "0:08:30.379925", "seconds": 510.379925}, "exception": null, "extra": {"security": true, "event": "admin_operation_unban_user", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_unban_user", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:31.148400+08:00", "timestamp": 1750145131.1484}}}
{"text": "聊天组解除禁言\n", "record": {"elapsed": {"repr": "0:08:34.027867", "seconds": 514.027867}, "exception": null, "extra": {"name": "database", "group_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "unban_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 596, "message": "聊天组解除禁言", "module": "models", "name": "server.database.models", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:34.796342+08:00", "timestamp": 1750145134.796342}}}
{"text": "管理员操作成功: unban_group\n", "record": {"elapsed": {"repr": "0:08:34.029197", "seconds": 514.029197}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "unban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: unban_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:34.797672+08:00", "timestamp": 1750145134.797672}}}
{"text": "安全事件: admin_operation_unban_group\n", "record": {"elapsed": {"repr": "0:08:34.029854", "seconds": 514.029854}, "exception": null, "extra": {"security": true, "event": "admin_operation_unban_group", "operation": "unban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_unban_group", "module": "logger", "name": "shared.logger", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139764804085440, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:25:34.798329+08:00", "timestamp": 1750145134.798329}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:17:27.825615", "seconds": 1047.825615}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:34:28.594090+08:00", "timestamp": 1750145668.59409}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:17:27.910967", "seconds": 1047.910967}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 63153, "name": "MainProcess"}, "thread": {"id": 139765239834432, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:34:28.679442+08:00", "timestamp": 1750145668.679442}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.513018", "seconds": 0.513018}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:21.729899+08:00", "timestamp": 1750146141.729899}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.513437", "seconds": 0.513437}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "__main__", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:21.730318+08:00", "timestamp": 1750146141.730318}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.517184", "seconds": 0.517184}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:21.734065+08:00", "timestamp": 1750146141.734065}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.809677", "seconds": 1.809677}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:23.026558+08:00", "timestamp": 1750146143.026558}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.810164", "seconds": 1.810164}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:23.027045+08:00", "timestamp": 1750146143.027045}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.811013", "seconds": 1.811013}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:23.027894+08:00", "timestamp": 1750146143.027894}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.811728", "seconds": 1.811728}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:23.028609+08:00", "timestamp": 1750146143.028609}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.811930", "seconds": 1.81193}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:23.028811+08:00", "timestamp": 1750146143.028811}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.817570", "seconds": 1.81757}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 102, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:23.034451+08:00", "timestamp": 1750146143.034451}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.817866", "seconds": 1.817866}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:23.034747+08:00", "timestamp": 1750146143.034747}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:34.398630", "seconds": 34.39863}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48872}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:55.615511+08:00", "timestamp": 1750146175.615511}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:34.399319", "seconds": 34.399319}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48872}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:42:55.616200+08:00", "timestamp": 1750146175.6162}}}
{"text": "登录失败：密码格式不正确\n", "record": {"elapsed": {"repr": "0:00:34.401558", "seconds": 34.401558}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 258, "message": "登录失败：密码格式不正确", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:42:55.618439+08:00", "timestamp": 1750146175.618439}}}
{"text": "安全事件: invalid_password_format\n", "record": {"elapsed": {"repr": "0:00:34.401848", "seconds": 34.401848}, "exception": null, "extra": {"security": true, "event": "invalid_password_format", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: invalid_password_format", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:42:55.618729+08:00", "timestamp": 1750146175.618729}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:00:34.516741", "seconds": 34.516741}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48872}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:42:55.733622+08:00", "timestamp": 1750146175.733622}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:00:34.517125", "seconds": 34.517125}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 15:42:55.734006+08:00", "timestamp": 1750146175.734006}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:46.102398", "seconds": 46.102398}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47416}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:43:07.319279+08:00", "timestamp": 1750146187.319279}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:46.102830", "seconds": 46.10283}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47416}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:43:07.319711+08:00", "timestamp": 1750146187.319711}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:46.103385", "seconds": 46.103385}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:43:07.320266+08:00", "timestamp": 1750146187.320266}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:00:46.104786", "seconds": 46.104786}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 311, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:43:07.321667+08:00", "timestamp": 1750146187.321667}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:00:46.105035", "seconds": 46.105035}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "test0", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:43:07.321916+08:00", "timestamp": 1750146187.321916}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:00:46.234920", "seconds": 46.23492}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47416}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:43:07.451801+08:00", "timestamp": 1750146187.451801}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:00:46.235288", "seconds": 46.235288}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 15:43:07.452169+08:00", "timestamp": 1750146187.452169}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:07.601887", "seconds": 67.601887}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48282}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:43:28.818768+08:00", "timestamp": 1750146208.818768}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:07.602348", "seconds": 67.602348}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48282}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:43:28.819229+08:00", "timestamp": 1750146208.819229}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:07.603057", "seconds": 67.603057}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:43:28.819938+08:00", "timestamp": 1750146208.819938}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:01:07.603658", "seconds": 67.603658}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 311, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:43:28.820539+08:00", "timestamp": 1750146208.820539}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:01:07.603869", "seconds": 67.603869}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "test1", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:43:28.820750+08:00", "timestamp": 1750146208.82075}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:01:07.719523", "seconds": 67.719523}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48282}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:43:28.936404+08:00", "timestamp": 1750146208.936404}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:01:07.720002", "seconds": 67.720002}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 15:43:28.936883+08:00", "timestamp": 1750146208.936883}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:02:27.836483", "seconds": 147.836483}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47612}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:44:49.053364+08:00", "timestamp": 1750146289.053364}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:02:27.836938", "seconds": 147.836938}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47612}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:44:49.053819+08:00", "timestamp": 1750146289.053819}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:06:17.996759", "seconds": 377.996759}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47612}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-17 15:48:39.213640+08:00", "timestamp": 1750146519.21364}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:06:18.042249", "seconds": 378.042249}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-17 15:48:39.259130+08:00", "timestamp": 1750146519.25913}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:06:37.029141", "seconds": 397.029141}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47672}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:48:58.246022+08:00", "timestamp": 1750146538.246022}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:06:37.030554", "seconds": 397.030554}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47672}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:48:58.247435+08:00", "timestamp": 1750146538.247435}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:06:47.876989", "seconds": 407.876989}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:09.093870+08:00", "timestamp": 1750146549.09387}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:06:47.897876", "seconds": 407.897876}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:09.114757+08:00", "timestamp": 1750146549.114757}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:06:47.898472", "seconds": 407.898472}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:09.115353+08:00", "timestamp": 1750146549.115353}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:06:47.899622", "seconds": 407.899622}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:09.116503+08:00", "timestamp": 1750146549.116503}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:06:53.768894", "seconds": 413.768894}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49278}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:49:14.985775+08:00", "timestamp": 1750146554.985775}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:06:53.769163", "seconds": 413.769163}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 49278}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:49:14.986044+08:00", "timestamp": 1750146554.986044}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:07:01.958436", "seconds": 421.958436}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-7 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:23.175317+08:00", "timestamp": 1750146563.175317}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:07:01.960088", "seconds": 421.960088}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-7 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:23.176969+08:00", "timestamp": 1750146563.176969}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:07:01.962083", "seconds": 421.962083}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-7 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:23.178964+08:00", "timestamp": 1750146563.178964}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:07:01.962382", "seconds": 421.962382}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-7 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:23.179263+08:00", "timestamp": 1750146563.179263}}}
{"text": "用户被禁言\n", "record": {"elapsed": {"repr": "0:07:22.237111", "seconds": 442.237111}, "exception": null, "extra": {"name": "database", "user_id": 1}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 543, "message": "用户被禁言", "module": "models", "name": "server.database.models", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:43.453992+08:00", "timestamp": 1750146583.453992}}}
{"text": "管理员操作成功: ban_user\n", "record": {"elapsed": {"repr": "0:07:22.239744", "seconds": 442.239744}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 1, "target_name": "test0", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:43.456625+08:00", "timestamp": 1750146583.456625}}}
{"text": "安全事件: admin_operation_ban_user\n", "record": {"elapsed": {"repr": "0:07:22.241453", "seconds": 442.241453}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_user", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 1, "target_name": "test0", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_user", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:43.458334+08:00", "timestamp": 1750146583.458334}}}
{"text": "用户操作: test0(1) - disconnect\n", "record": {"elapsed": {"repr": "0:07:36.120504", "seconds": 456.120504}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-7 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:57.337385+08:00", "timestamp": 1750146597.337385}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:07:36.124127", "seconds": 456.124127}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49278}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-7 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:57.341008+08:00", "timestamp": 1750146597.341008}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:07:36.124386", "seconds": 456.124386}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-7 (handle_client)"}, "time": {"repr": "2025-06-17 15:49:57.341267+08:00", "timestamp": 1750146597.341267}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:07:41.729429", "seconds": 461.729429}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48006}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:50:02.946310+08:00", "timestamp": 1750146602.94631}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:07:41.729833", "seconds": 461.729833}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48006}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:50:02.946714+08:00", "timestamp": 1750146602.946714}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:07:48.803953", "seconds": 468.803953}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-8 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:10.020834+08:00", "timestamp": 1750146610.020834}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:07:48.810971", "seconds": 468.810971}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 311, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-8 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:10.027852+08:00", "timestamp": 1750146610.027852}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:07:48.811757", "seconds": 468.811757}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "test0", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-8 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:10.028638+08:00", "timestamp": 1750146610.028638}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:07:56.654908", "seconds": 476.654908}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-8 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:17.871789+08:00", "timestamp": 1750146617.871789}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:07:56.661837", "seconds": 476.661837}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-8 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:17.878718+08:00", "timestamp": 1750146617.878718}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:07:56.662558", "seconds": 476.662558}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-8 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:17.879439+08:00", "timestamp": 1750146617.879439}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:07:56.662868", "seconds": 476.662868}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856810337984, "name": "Thread-8 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:17.879749+08:00", "timestamp": 1750146617.879749}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:08:16.344299", "seconds": 496.344299}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47030}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:50:37.561180+08:00", "timestamp": 1750146637.56118}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:08:16.344736", "seconds": 496.344736}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47030}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:50:37.561617+08:00", "timestamp": 1750146637.561617}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:08:23.495362", "seconds": 503.495362}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:44.712243+08:00", "timestamp": 1750146644.712243}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:08:23.498858", "seconds": 503.498858}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 311, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:44.715739+08:00", "timestamp": 1750146644.715739}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:08:23.499267", "seconds": 503.499267}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "test1", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:44.716148+08:00", "timestamp": 1750146644.716148}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:08:34.163570", "seconds": 514.16357}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:55.380451+08:00", "timestamp": 1750146655.380451}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:08:34.166640", "seconds": 514.16664}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 311, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:55.383521+08:00", "timestamp": 1750146655.383521}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:08:34.167039", "seconds": 514.167039}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "test1", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:50:55.383920+08:00", "timestamp": 1750146655.38392}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:08:46.884334", "seconds": 526.884334}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:51:08.101215+08:00", "timestamp": 1750146668.101215}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:08:46.888896", "seconds": 526.888896}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 311, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:51:08.105777+08:00", "timestamp": 1750146668.105777}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:08:46.889342", "seconds": 526.889342}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "test1", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:51:08.106223+08:00", "timestamp": 1750146668.106223}}}
{"text": "登录失败：用户名格式不正确\n", "record": {"elapsed": {"repr": "0:09:11.633752", "seconds": 551.633752}, "exception": null, "extra": {"name": "server.core", "username": "/login", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 251, "message": "登录失败：用户名格式不正确", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:51:32.850633+08:00", "timestamp": 1750146692.850633}}}
{"text": "安全事件: invalid_username_format\n", "record": {"elapsed": {"repr": "0:09:11.634183", "seconds": 551.634183}, "exception": null, "extra": {"security": true, "event": "invalid_username_format", "username": "/login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: invalid_username_format", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:51:32.851064+08:00", "timestamp": 1750146692.851064}}}
{"text": "用户信息被更新\n", "record": {"elapsed": {"repr": "0:10:01.129261", "seconds": 601.129261}, "exception": null, "extra": {"name": "database", "user_id": 2, "username": "test1"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "update_user_info", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 687, "message": "用户信息被更新", "module": "models", "name": "server.database.models", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:52:22.346142+08:00", "timestamp": 1750146742.346142}}}
{"text": "管理员操作成功: modify_user\n", "record": {"elapsed": {"repr": "0:10:01.146899", "seconds": 601.146899}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "modify_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: modify_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:52:22.363780+08:00", "timestamp": 1750146742.36378}}}
{"text": "安全事件: admin_operation_modify_user\n", "record": {"elapsed": {"repr": "0:10:01.148290", "seconds": 601.14829}, "exception": null, "extra": {"security": true, "event": "admin_operation_modify_user", "operation": "modify_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_modify_user", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:52:22.365171+08:00", "timestamp": 1750146742.365171}}}
{"text": "用户信息被更新\n", "record": {"elapsed": {"repr": "0:10:13.458010", "seconds": 613.45801}, "exception": null, "extra": {"name": "database", "user_id": 2, "username": null}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "update_user_info", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 687, "message": "用户信息被更新", "module": "models", "name": "server.database.models", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:52:34.674891+08:00", "timestamp": 1750146754.674891}}}
{"text": "管理员操作成功: modify_user\n", "record": {"elapsed": {"repr": "0:10:13.459694", "seconds": 613.459694}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "modify_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: modify_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:52:34.676575+08:00", "timestamp": 1750146754.676575}}}
{"text": "安全事件: admin_operation_modify_user\n", "record": {"elapsed": {"repr": "0:10:13.460618", "seconds": 613.460618}, "exception": null, "extra": {"security": true, "event": "admin_operation_modify_user", "operation": "modify_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_modify_user", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:52:34.677499+08:00", "timestamp": 1750146754.677499}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:10:25.793046", "seconds": 625.793046}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:52:47.009927+08:00", "timestamp": 1750146767.009927}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:10:25.801990", "seconds": 625.80199}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:52:47.018871+08:00", "timestamp": 1750146767.018871}}}
{"text": "用户操作: test1(2) - login\n", "record": {"elapsed": {"repr": "0:10:25.802543", "seconds": 625.802543}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - login", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:52:47.019424+08:00", "timestamp": 1750146767.019424}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:10:25.802849", "seconds": 625.802849}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:52:47.019730+08:00", "timestamp": 1750146767.01973}}}
{"text": "聊天组被禁言\n", "record": {"elapsed": {"repr": "0:11:01.961555", "seconds": 661.961555}, "exception": null, "extra": {"name": "database", "group_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 582, "message": "聊天组被禁言", "module": "models", "name": "server.database.models", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:53:23.178436+08:00", "timestamp": 1750146803.178436}}}
{"text": "管理员操作成功: ban_group\n", "record": {"elapsed": {"repr": "0:11:01.964522", "seconds": 661.964522}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:53:23.181403+08:00", "timestamp": 1750146803.181403}}}
{"text": "安全事件: admin_operation_ban_group\n", "record": {"elapsed": {"repr": "0:11:01.965021", "seconds": 661.965021}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_group", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_group", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:53:23.181902+08:00", "timestamp": 1750146803.181902}}}
{"text": "管理员操作成功: list_banned\n", "record": {"elapsed": {"repr": "0:11:33.793589", "seconds": 693.793589}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "list_banned", "operator_id": 0, "operator_name": "Admin", "target_type": "system", "target_id": 0, "target_name": "banned_objects", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: list_banned", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:53:55.010470+08:00", "timestamp": 1750146835.01047}}}
{"text": "安全事件: admin_operation_list_banned\n", "record": {"elapsed": {"repr": "0:11:33.794776", "seconds": 693.794776}, "exception": null, "extra": {"security": true, "event": "admin_operation_list_banned", "operation": "list_banned", "operator_id": 0, "operator_name": "Admin", "target_type": "system", "target_id": 0, "target_name": "banned_objects", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_list_banned", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:53:55.011657+08:00", "timestamp": 1750146835.011657}}}
{"text": "用户解除禁言\n", "record": {"elapsed": {"repr": "0:11:40.614118", "seconds": 700.614118}, "exception": null, "extra": {"name": "database", "user_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "unban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 557, "message": "用户解除禁言", "module": "models", "name": "server.database.models", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:01.830999+08:00", "timestamp": 1750146841.830999}}}
{"text": "管理员操作成功: unban_user\n", "record": {"elapsed": {"repr": "0:11:40.616516", "seconds": 700.616516}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: unban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:01.833397+08:00", "timestamp": 1750146841.833397}}}
{"text": "安全事件: admin_operation_unban_user\n", "record": {"elapsed": {"repr": "0:11:40.617069", "seconds": 700.617069}, "exception": null, "extra": {"security": true, "event": "admin_operation_unban_user", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_unban_user", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:01.833950+08:00", "timestamp": 1750146841.83395}}}
{"text": "用户解除禁言\n", "record": {"elapsed": {"repr": "0:11:58.203490", "seconds": 718.20349}, "exception": null, "extra": {"name": "database", "user_id": 1}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "unban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 557, "message": "用户解除禁言", "module": "models", "name": "server.database.models", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:19.420371+08:00", "timestamp": 1750146859.420371}}}
{"text": "管理员操作成功: unban_user\n", "record": {"elapsed": {"repr": "0:11:58.204938", "seconds": 718.204938}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 1, "target_name": "test0", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: unban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:19.421819+08:00", "timestamp": 1750146859.421819}}}
{"text": "安全事件: admin_operation_unban_user\n", "record": {"elapsed": {"repr": "0:11:58.205280", "seconds": 718.20528}, "exception": null, "extra": {"security": true, "event": "admin_operation_unban_user", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 1, "target_name": "test0", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_unban_user", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:19.422161+08:00", "timestamp": 1750146859.422161}}}
{"text": "聊天组解除禁言\n", "record": {"elapsed": {"repr": "0:12:02.651629", "seconds": 722.651629}, "exception": null, "extra": {"name": "database", "group_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "unban_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 596, "message": "聊天组解除禁言", "module": "models", "name": "server.database.models", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:23.868510+08:00", "timestamp": 1750146863.86851}}}
{"text": "管理员操作成功: unban_group\n", "record": {"elapsed": {"repr": "0:12:02.653250", "seconds": 722.65325}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "unban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: unban_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:23.870131+08:00", "timestamp": 1750146863.870131}}}
{"text": "安全事件: admin_operation_unban_group\n", "record": {"elapsed": {"repr": "0:12:02.654053", "seconds": 722.654053}, "exception": null, "extra": {"security": true, "event": "admin_operation_unban_group", "operation": "unban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_unban_group", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856818730688, "name": "Thread-6 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:23.870934+08:00", "timestamp": 1750146863.870934}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:12:07.669934", "seconds": 727.669934}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "chat_group_id": 2, "message_length": 6}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 374, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:28.886815+08:00", "timestamp": 1750146868.886815}}}
{"text": "用户操作: test1(2) - send_message\n", "record": {"elapsed": {"repr": "0:12:07.671788", "seconds": 727.671788}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "send_message", "chat_group_id": 2, "message_length": 6}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:28.888669+08:00", "timestamp": 1750146868.888669}}}
{"text": "AI生成回复\n", "record": {"elapsed": {"repr": "0:12:09.471739", "seconds": 729.471739}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "chat_group_id": 2, "response_time": 1.788550615310669, "reply_length": 14}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 403, "message": "AI生成回复", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:30.688620+08:00", "timestamp": 1750146870.68862}}}
{"text": "AI操作: generate_reply - glm-4-flash\n", "record": {"elapsed": {"repr": "0:12:09.473099", "seconds": 729.473099}, "exception": null, "extra": {"ai": true, "operation": "generate_reply", "model": "glm-4-flash", "user_id": 2, "chat_group_id": 2, "response_time": 1.788550615310669}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_ai_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 236, "message": "AI操作: generate_reply - glm-4-flash", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856801945280, "name": "Thread-9 (handle_client)"}, "time": {"repr": "2025-06-17 15:54:30.689980+08:00", "timestamp": 1750146870.68998}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:16:54.242791", "seconds": 1014.242791}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47852}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:59:15.459672+08:00", "timestamp": 1750147155.459672}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:16:54.295741", "seconds": 1014.295741}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47852}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 15:59:15.512622+08:00", "timestamp": 1750147155.512622}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:19:17.573850", "seconds": 1157.57385}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-10 (handle_client)"}, "time": {"repr": "2025-06-17 16:01:38.790731+08:00", "timestamp": 1750147298.790731}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:19:17.601954", "seconds": 1157.601954}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 311, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-10 (handle_client)"}, "time": {"repr": "2025-06-17 16:01:38.818835+08:00", "timestamp": 1750147298.818835}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:19:17.603229", "seconds": 1157.603229}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "test1", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-10 (handle_client)"}, "time": {"repr": "2025-06-17 16:01:38.820110+08:00", "timestamp": 1750147298.82011}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:20:31.618254", "seconds": 1231.618254}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-10 (handle_client)"}, "time": {"repr": "2025-06-17 16:02:52.835135+08:00", "timestamp": 1750147372.835135}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:20:31.627215", "seconds": 1231.627215}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-10 (handle_client)"}, "time": {"repr": "2025-06-17 16:02:52.844096+08:00", "timestamp": 1750147372.844096}}}
{"text": "用户操作: test1(2) - login\n", "record": {"elapsed": {"repr": "0:20:31.628497", "seconds": 1231.628497}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - login", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-10 (handle_client)"}, "time": {"repr": "2025-06-17 16:02:52.845378+08:00", "timestamp": 1750147372.845378}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:20:31.630030", "seconds": 1231.63003}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-10 (handle_client)"}, "time": {"repr": "2025-06-17 16:02:52.846911+08:00", "timestamp": 1750147372.846911}}}
{"text": "用户操作: test1(2) - disconnect\n", "record": {"elapsed": {"repr": "0:21:51.264622", "seconds": 1311.264622}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-10 (handle_client)"}, "time": {"repr": "2025-06-17 16:04:12.481503+08:00", "timestamp": 1750147452.481503}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:21:51.270375", "seconds": 1311.270375}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47852}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-10 (handle_client)"}, "time": {"repr": "2025-06-17 16:04:12.487256+08:00", "timestamp": 1750147452.487256}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:21:51.271034", "seconds": 1311.271034}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-10 (handle_client)"}, "time": {"repr": "2025-06-17 16:04:12.487915+08:00", "timestamp": 1750147452.487915}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:22:31.276543", "seconds": 1351.276543}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48236}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:04:52.493424+08:00", "timestamp": 1750147492.493424}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:22:31.277914", "seconds": 1351.277914}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48236}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139857249875776, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:04:52.494795+08:00", "timestamp": 1750147492.494795}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:23:03.758332", "seconds": 1383.758332}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-11 (handle_client)"}, "time": {"repr": "2025-06-17 16:05:24.975213+08:00", "timestamp": 1750147524.975213}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:23:03.770758", "seconds": 1383.770758}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-11 (handle_client)"}, "time": {"repr": "2025-06-17 16:05:24.987639+08:00", "timestamp": 1750147524.987639}}}
{"text": "用户操作: test1(2) - login\n", "record": {"elapsed": {"repr": "0:23:03.771151", "seconds": 1383.771151}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - login", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-11 (handle_client)"}, "time": {"repr": "2025-06-17 16:05:24.988032+08:00", "timestamp": 1750147524.988032}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:23:03.771953", "seconds": 1383.771953}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-11 (handle_client)"}, "time": {"repr": "2025-06-17 16:05:24.988834+08:00", "timestamp": 1750147524.988834}}}
{"text": "用户操作: test1(2) - disconnect\n", "record": {"elapsed": {"repr": "0:24:11.975065", "seconds": 1451.975065}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-11 (handle_client)"}, "time": {"repr": "2025-06-17 16:06:33.191946+08:00", "timestamp": 1750147593.191946}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:24:11.983845", "seconds": 1451.983845}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48236}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-11 (handle_client)"}, "time": {"repr": "2025-06-17 16:06:33.200726+08:00", "timestamp": 1750147593.200726}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:24:11.984586", "seconds": 1451.984586}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 68528, "name": "MainProcess"}, "thread": {"id": 139856793552576, "name": "Thread-11 (handle_client)"}, "time": {"repr": "2025-06-17 16:06:33.201467+08:00", "timestamp": 1750147593.201467}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.430927", "seconds": 0.430927}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:09:37.715578+08:00", "timestamp": 1750147777.715578}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.431206", "seconds": 0.431206}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:09:37.715857+08:00", "timestamp": 1750147777.715857}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.434284", "seconds": 0.434284}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:09:37.718935+08:00", "timestamp": 1750147777.718935}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:02.379683", "seconds": 2.379683}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:09:39.664334+08:00", "timestamp": 1750147779.664334}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:02.380590", "seconds": 2.38059}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:09:39.665241+08:00", "timestamp": 1750147779.665241}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:02.381955", "seconds": 2.381955}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:09:39.666606+08:00", "timestamp": 1750147779.666606}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:02.382985", "seconds": 2.382985}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:09:39.667636+08:00", "timestamp": 1750147779.667636}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:02.383273", "seconds": 2.383273}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:09:39.667924+08:00", "timestamp": 1750147779.667924}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:02.387969", "seconds": 2.387969}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 102, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:09:39.672620+08:00", "timestamp": 1750147779.67262}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:02.388274", "seconds": 2.388274}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:09:39.672925+08:00", "timestamp": 1750147779.672925}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:31.977646", "seconds": 31.977646}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48096}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:10:09.262297+08:00", "timestamp": 1750147809.262297}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:31.978023", "seconds": 31.978023}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48096}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:10:09.262674+08:00", "timestamp": 1750147809.262674}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:37.918083", "seconds": 37.918083}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49666}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:10:15.202734+08:00", "timestamp": 1750147815.202734}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:37.918384", "seconds": 37.918384}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 49666}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:10:15.203035+08:00", "timestamp": 1750147815.203035}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:40.857697", "seconds": 40.857697}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49670}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:10:18.142348+08:00", "timestamp": 1750147818.142348}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:40.858006", "seconds": 40.858006}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 49670}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:10:18.142657+08:00", "timestamp": 1750147818.142657}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:53.770632", "seconds": 53.770632}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:10:31.055283+08:00", "timestamp": 1750147831.055283}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:53.772331", "seconds": 53.772331}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:10:31.056982+08:00", "timestamp": 1750147831.056982}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:00:53.772740", "seconds": 53.77274}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:10:31.057391+08:00", "timestamp": 1750147831.057391}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:53.773050", "seconds": 53.77305}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:10:31.057701+08:00", "timestamp": 1750147831.057701}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:02.109660", "seconds": 62.10966}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332217923264, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 16:10:39.394311+08:00", "timestamp": 1750147839.394311}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:02.113441", "seconds": 62.113441}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332217923264, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 16:10:39.398092+08:00", "timestamp": 1750147839.398092}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:01:02.113867", "seconds": 62.113867}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332217923264, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 16:10:39.398518+08:00", "timestamp": 1750147839.398518}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:02.114277", "seconds": 62.114277}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332217923264, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 16:10:39.398928+08:00", "timestamp": 1750147839.398928}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:12.319148", "seconds": 72.319148}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332209530560, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 16:10:49.603799+08:00", "timestamp": 1750147849.603799}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:01:12.320038", "seconds": 72.320038}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 311, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332209530560, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 16:10:49.604689+08:00", "timestamp": 1750147849.604689}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:01:12.320409", "seconds": 72.320409}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "test1", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332209530560, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 16:10:49.605060+08:00", "timestamp": 1750147849.60506}}}
{"text": "用户信息被更新\n", "record": {"elapsed": {"repr": "0:01:46.310364", "seconds": 106.310364}, "exception": null, "extra": {"name": "database", "user_id": 2, "username": null}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "update_user_info", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 687, "message": "用户信息被更新", "module": "models", "name": "server.database.models", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:11:23.595015+08:00", "timestamp": 1750147883.595015}}}
{"text": "管理员操作成功: modify_user\n", "record": {"elapsed": {"repr": "0:01:46.311550", "seconds": 106.31155}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "modify_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: modify_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:11:23.596201+08:00", "timestamp": 1750147883.596201}}}
{"text": "安全事件: admin_operation_modify_user\n", "record": {"elapsed": {"repr": "0:01:46.311945", "seconds": 106.311945}, "exception": null, "extra": {"security": true, "event": "admin_operation_modify_user", "operation": "modify_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_modify_user", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:11:23.596596+08:00", "timestamp": 1750147883.596596}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:54.235961", "seconds": 114.235961}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332209530560, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 16:11:31.520612+08:00", "timestamp": 1750147891.520612}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:54.253410", "seconds": 114.25341}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332209530560, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 16:11:31.538061+08:00", "timestamp": 1750147891.538061}}}
{"text": "用户操作: test1(2) - login\n", "record": {"elapsed": {"repr": "0:01:54.253915", "seconds": 114.253915}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - login", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332209530560, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 16:11:31.538566+08:00", "timestamp": 1750147891.538566}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:54.254584", "seconds": 114.254584}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332209530560, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 16:11:31.539235+08:00", "timestamp": 1750147891.539235}}}
{"text": "物理文件已删除: server/data/files/2/86082170fdaa4394898528186b4fc507_README.md\n", "record": {"elapsed": {"repr": "0:02:55.778007", "seconds": 175.778007}, "exception": null, "extra": {"name": "database"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "delete_file", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 749, "message": "物理文件已删除: server/data/files/2/86082170fdaa4394898528186b4fc507_README.md", "module": "models", "name": "server.database.models", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:12:33.062658+08:00", "timestamp": 1750147953.062658}}}
{"text": "文件被删除\n", "record": {"elapsed": {"repr": "0:02:55.780085", "seconds": 175.780085}, "exception": null, "extra": {"name": "database", "file_id": 1, "filename": "README.md"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "delete_file", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 757, "message": "文件被删除", "module": "models", "name": "server.database.models", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:12:33.064736+08:00", "timestamp": 1750147953.064736}}}
{"text": "管理员操作成功: delete_file\n", "record": {"elapsed": {"repr": "0:02:55.781006", "seconds": 175.781006}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "delete_file", "operator_id": 0, "operator_name": "Admin", "target_type": "file", "target_id": 1, "target_name": "README.md", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: delete_file", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:12:33.065657+08:00", "timestamp": 1750147953.065657}}}
{"text": "安全事件: admin_operation_delete_file\n", "record": {"elapsed": {"repr": "0:02:55.781348", "seconds": 175.781348}, "exception": null, "extra": {"security": true, "event": "admin_operation_delete_file", "operation": "delete_file", "operator_id": 0, "operator_name": "Admin", "target_type": "file", "target_id": 1, "target_name": "README.md", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_delete_file", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:12:33.065999+08:00", "timestamp": 1750147953.065999}}}
{"text": "开始发送文件数据\n", "record": {"elapsed": {"repr": "0:04:13.689724", "seconds": 253.689724}, "exception": null, "extra": {"name": "server.core", "filename": "README.md", "file_size": 20011}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_file_download_request", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 939, "message": "开始发送文件数据", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332209530560, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 16:13:50.974375+08:00", "timestamp": 1750148030.974375}}}
{"text": "文件操作: send_start - README.md\n", "record": {"elapsed": {"repr": "0:04:13.710962", "seconds": 253.710962}, "exception": null, "extra": {"file": true, "operation": "send_start", "filename": "README.md", "file_size": 20011}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: send_start - README.md", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332209530560, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-17 16:13:50.995613+08:00", "timestamp": 1750148030.995613}}}
{"text": "用户被禁言\n", "record": {"elapsed": {"repr": "0:04:55.814003", "seconds": 295.814003}, "exception": null, "extra": {"name": "database", "user_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 543, "message": "用户被禁言", "module": "models", "name": "server.database.models", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:14:33.098654+08:00", "timestamp": 1750148073.098654}}}
{"text": "管理员操作成功: ban_user\n", "record": {"elapsed": {"repr": "0:04:55.819949", "seconds": 295.819949}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:14:33.104600+08:00", "timestamp": 1750148073.1046}}}
{"text": "安全事件: admin_operation_ban_user\n", "record": {"elapsed": {"repr": "0:04:55.823839", "seconds": 295.823839}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_user", "operation": "ban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_user", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:14:33.108490+08:00", "timestamp": 1750148073.10849}}}
{"text": "聊天组被禁言\n", "record": {"elapsed": {"repr": "0:05:12.358843", "seconds": 312.358843}, "exception": null, "extra": {"name": "database", "group_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "ban_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 582, "message": "聊天组被禁言", "module": "models", "name": "server.database.models", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:14:49.643494+08:00", "timestamp": 1750148089.643494}}}
{"text": "管理员操作成功: ban_group\n", "record": {"elapsed": {"repr": "0:05:12.360356", "seconds": 312.360356}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: ban_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:14:49.645007+08:00", "timestamp": 1750148089.645007}}}
{"text": "安全事件: admin_operation_ban_group\n", "record": {"elapsed": {"repr": "0:05:12.360824", "seconds": 312.360824}, "exception": null, "extra": {"security": true, "event": "admin_operation_ban_group", "operation": "ban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_ban_group", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:14:49.645475+08:00", "timestamp": 1750148089.645475}}}
{"text": "管理员操作成功: list_banned\n", "record": {"elapsed": {"repr": "0:05:24.274766", "seconds": 324.274766}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "list_banned", "operator_id": 0, "operator_name": "Admin", "target_type": "system", "target_id": 0, "target_name": "banned_objects", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: list_banned", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:01.559417+08:00", "timestamp": 1750148101.559417}}}
{"text": "安全事件: admin_operation_list_banned\n", "record": {"elapsed": {"repr": "0:05:24.275827", "seconds": 324.275827}, "exception": null, "extra": {"security": true, "event": "admin_operation_list_banned", "operation": "list_banned", "operator_id": 0, "operator_name": "Admin", "target_type": "system", "target_id": 0, "target_name": "banned_objects", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_list_banned", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:01.560478+08:00", "timestamp": 1750148101.560478}}}
{"text": "用户解除禁言\n", "record": {"elapsed": {"repr": "0:05:29.221947", "seconds": 329.221947}, "exception": null, "extra": {"name": "database", "user_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "unban_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 557, "message": "用户解除禁言", "module": "models", "name": "server.database.models", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:06.506598+08:00", "timestamp": 1750148106.506598}}}
{"text": "管理员操作成功: unban_user\n", "record": {"elapsed": {"repr": "0:05:29.223701", "seconds": 329.223701}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: unban_user", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:06.508352+08:00", "timestamp": 1750148106.508352}}}
{"text": "安全事件: admin_operation_unban_user\n", "record": {"elapsed": {"repr": "0:05:29.224102", "seconds": 329.224102}, "exception": null, "extra": {"security": true, "event": "admin_operation_unban_user", "operation": "unban_user", "operator_id": 0, "operator_name": "Admin", "target_type": "user", "target_id": 2, "target_name": "test1", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_unban_user", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:06.508753+08:00", "timestamp": 1750148106.508753}}}
{"text": "聊天组解除禁言\n", "record": {"elapsed": {"repr": "0:05:35.137799", "seconds": 335.137799}, "exception": null, "extra": {"name": "database", "group_id": 2}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "unban_chat_group", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 596, "message": "聊天组解除禁言", "module": "models", "name": "server.database.models", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:12.422450+08:00", "timestamp": 1750148112.42245}}}
{"text": "管理员操作成功: unban_group\n", "record": {"elapsed": {"repr": "0:05:35.139338", "seconds": 335.139338}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "unban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: unban_group", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:12.423989+08:00", "timestamp": 1750148112.423989}}}
{"text": "安全事件: admin_operation_unban_group\n", "record": {"elapsed": {"repr": "0:05:35.140573", "seconds": 335.140573}, "exception": null, "extra": {"security": true, "event": "admin_operation_unban_group", "operation": "unban_group", "operator_id": 0, "operator_name": "Admin", "target_type": "group", "target_id": 2, "target_name": "test0_g", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_unban_group", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332701472448, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:12.425224+08:00", "timestamp": 1750148112.425224}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:05:47.433744", "seconds": 347.433744}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 2, "message_length": 6}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 374, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332217923264, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:24.718395+08:00", "timestamp": 1750148124.718395}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:05:47.437006", "seconds": 347.437006}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 2, "message_length": 6}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332217923264, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:24.721657+08:00", "timestamp": 1750148124.721657}}}
{"text": "AI生成回复\n", "record": {"elapsed": {"repr": "0:05:48.455779", "seconds": 348.455779}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "chat_group_id": 2, "response_time": 1.009911060333252, "reply_length": 14}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 403, "message": "AI生成回复", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332217923264, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:25.740430+08:00", "timestamp": 1750148125.74043}}}
{"text": "AI操作: generate_reply - glm-4-flash\n", "record": {"elapsed": {"repr": "0:05:48.456364", "seconds": 348.456364}, "exception": null, "extra": {"ai": true, "operation": "generate_reply", "model": "glm-4-flash", "user_id": 1, "chat_group_id": 2, "response_time": 1.009911060333252}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_ai_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 236, "message": "AI操作: generate_reply - glm-4-flash", "module": "logger", "name": "shared.logger", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332217923264, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-17 16:15:25.741015+08:00", "timestamp": 1750148125.741015}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:09:03.506015", "seconds": 543.506015}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:18:40.790666+08:00", "timestamp": 1750148320.790666}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:09:03.568304", "seconds": 543.568304}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 75704, "name": "MainProcess"}, "thread": {"id": 140332795832128, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:18:40.852955+08:00", "timestamp": 1750148320.852955}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.450668", "seconds": 0.450668}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:10.720571+08:00", "timestamp": 1750149070.720571}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.451021", "seconds": 0.451021}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:10.720924+08:00", "timestamp": 1750149070.720924}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.454049", "seconds": 0.454049}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:10.723952+08:00", "timestamp": 1750149070.723952}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.158731", "seconds": 1.158731}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:11.428634+08:00", "timestamp": 1750149071.428634}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.159834", "seconds": 1.159834}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:11.429737+08:00", "timestamp": 1750149071.429737}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.161874", "seconds": 1.161874}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:11.431777+08:00", "timestamp": 1750149071.431777}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.163695", "seconds": 1.163695}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:11.433598+08:00", "timestamp": 1750149071.433598}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.164327", "seconds": 1.164327}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:11.434230+08:00", "timestamp": 1750149071.43423}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.173614", "seconds": 1.173614}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 102, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:11.443517+08:00", "timestamp": 1750149071.443517}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.174094", "seconds": 1.174094}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:11.443997+08:00", "timestamp": 1750149071.443997}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:08.726509", "seconds": 8.726509}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46828}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:18.996412+08:00", "timestamp": 1750149078.996412}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:08.726972", "seconds": 8.726972}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 46828}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:31:18.996875+08:00", "timestamp": 1750149078.996875}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:17.317148", "seconds": 17.317148}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:27.587051+08:00", "timestamp": 1750149087.587051}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:17.318650", "seconds": 17.31865}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:27.588553+08:00", "timestamp": 1750149087.588553}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:00:17.318994", "seconds": 17.318994}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:27.588897+08:00", "timestamp": 1750149087.588897}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:17.319398", "seconds": 17.319398}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:27.589301+08:00", "timestamp": 1750149087.589301}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:00:36.879333", "seconds": 36.879333}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 2, "message_length": 8}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 374, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:47.149236+08:00", "timestamp": 1750149107.149236}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:00:36.879969", "seconds": 36.879969}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 2, "message_length": 8}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:47.149872+08:00", "timestamp": 1750149107.149872}}}
{"text": "AI生成回复\n", "record": {"elapsed": {"repr": "0:00:37.622373", "seconds": 37.622373}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "chat_group_id": 2, "response_time": 0.7356922626495361, "reply_length": 25}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 403, "message": "AI生成回复", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:47.892276+08:00", "timestamp": 1750149107.892276}}}
{"text": "AI操作: generate_reply - glm-4-flash\n", "record": {"elapsed": {"repr": "0:00:37.623048", "seconds": 37.623048}, "exception": null, "extra": {"ai": true, "operation": "generate_reply", "model": "glm-4-flash", "user_id": 1, "chat_group_id": 2, "response_time": 0.7356922626495361}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_ai_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 236, "message": "AI操作: generate_reply - glm-4-flash", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:47.892951+08:00", "timestamp": 1750149107.892951}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:00:47.545350", "seconds": 47.54535}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 2, "message_length": 7}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 374, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:57.815253+08:00", "timestamp": 1750149117.815253}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:00:47.545782", "seconds": 47.545782}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 2, "message_length": 7}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:57.815685+08:00", "timestamp": 1750149117.815685}}}
{"text": "AI生成回复\n", "record": {"elapsed": {"repr": "0:00:48.437524", "seconds": 48.437524}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "chat_group_id": 2, "response_time": 0.8844149112701416, "reply_length": 43}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 403, "message": "AI生成回复", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:58.707427+08:00", "timestamp": 1750149118.707427}}}
{"text": "AI操作: generate_reply - glm-4-flash\n", "record": {"elapsed": {"repr": "0:00:48.438274", "seconds": 48.438274}, "exception": null, "extra": {"ai": true, "operation": "generate_reply", "model": "glm-4-flash", "user_id": 1, "chat_group_id": 2, "response_time": 0.8844149112701416}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_ai_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 236, "message": "AI操作: generate_reply - glm-4-flash", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:31:58.708177+08:00", "timestamp": 1750149118.708177}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:01:12.189689", "seconds": 72.189689}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 2, "message_length": 7}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 374, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:32:22.459592+08:00", "timestamp": 1750149142.459592}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:01:12.190221", "seconds": 72.190221}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 2, "message_length": 7}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:32:22.460124+08:00", "timestamp": 1750149142.460124}}}
{"text": "AI生成回复\n", "record": {"elapsed": {"repr": "0:01:13.197601", "seconds": 73.197601}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "chat_group_id": 2, "response_time": 0.999901533126831, "reply_length": 36}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 403, "message": "AI生成回复", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:32:23.467504+08:00", "timestamp": 1750149143.467504}}}
{"text": "AI操作: generate_reply - glm-4-flash\n", "record": {"elapsed": {"repr": "0:01:13.198239", "seconds": 73.198239}, "exception": null, "extra": {"ai": true, "operation": "generate_reply", "model": "glm-4-flash", "user_id": 1, "chat_group_id": 2, "response_time": 0.999901533126831}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_ai_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 236, "message": "AI操作: generate_reply - glm-4-flash", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:32:23.468142+08:00", "timestamp": 1750149143.468142}}}
{"text": "用户操作: test0(1) - disconnect\n", "record": {"elapsed": {"repr": "0:01:22.689018", "seconds": 82.689018}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:32:32.958921+08:00", "timestamp": 1750149152.958921}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:01:22.691726", "seconds": 82.691726}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46828}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:32:32.961629+08:00", "timestamp": 1750149152.961629}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:01:22.691956", "seconds": 82.691956}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140194999813824, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-17 16:32:32.961859+08:00", "timestamp": 1750149152.961859}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:01:26.067088", "seconds": 86.067088}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:32:36.336991+08:00", "timestamp": 1750149156.336991}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:01:26.067450", "seconds": 86.06745}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 80737, "name": "MainProcess"}, "thread": {"id": 140195094173504, "name": "MainThread"}, "time": {"repr": "2025-06-17 16:32:36.337353+08:00", "timestamp": 1750149156.337353}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.411856", "seconds": 0.411856}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:14:53.078157+08:00", "timestamp": 1750230893.078157}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.412211", "seconds": 0.412211}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:14:53.078512+08:00", "timestamp": 1750230893.078512}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.415525", "seconds": 0.415525}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:14:53.081826+08:00", "timestamp": 1750230893.081826}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:02.477687", "seconds": 2.477687}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:14:55.143988+08:00", "timestamp": 1750230895.143988}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:02.478768", "seconds": 2.478768}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:14:55.145069+08:00", "timestamp": 1750230895.145069}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:02.480371", "seconds": 2.480371}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:14:55.146672+08:00", "timestamp": 1750230895.146672}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:02.481641", "seconds": 2.481641}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:14:55.147942+08:00", "timestamp": 1750230895.147942}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:02.482029", "seconds": 2.482029}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:14:55.148330+08:00", "timestamp": 1750230895.14833}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:02.495436", "seconds": 2.495436}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 102, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:14:55.161737+08:00", "timestamp": 1750230895.161737}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:02.495772", "seconds": 2.495772}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:14:55.162073+08:00", "timestamp": 1750230895.162073}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:19.005069", "seconds": 19.005069}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49040}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 112, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:15:11.671370+08:00", "timestamp": 1750230911.67137}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:19.005410", "seconds": 19.00541}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 49040}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:15:11.671711+08:00", "timestamp": 1750230911.671711}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:26.287241", "seconds": 26.287241}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 264, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:18.953542+08:00", "timestamp": 1750230918.953542}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:26.293430", "seconds": 26.29343}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 289, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:18.959731+08:00", "timestamp": 1750230918.959731}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:00:26.293802", "seconds": 26.293802}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:18.960103+08:00", "timestamp": 1750230918.960103}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:26.294094", "seconds": 26.294094}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:18.960395+08:00", "timestamp": 1750230918.960395}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:00:31.743497", "seconds": 31.743497}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 1, "message_length": 9}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 374, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:24.409798+08:00", "timestamp": 1750230924.409798}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:00:31.743852", "seconds": 31.743852}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 1, "message_length": 9}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:24.410153+08:00", "timestamp": 1750230924.410153}}}
{"text": "AI生成回复\n", "record": {"elapsed": {"repr": "0:00:32.503495", "seconds": 32.503495}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "chat_group_id": 1, "response_time": 0.7538533210754395, "reply_length": 14}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 403, "message": "AI生成回复", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:25.169796+08:00", "timestamp": 1750230925.169796}}}
{"text": "AI操作: generate_reply - glm-4-flash\n", "record": {"elapsed": {"repr": "0:00:32.504128", "seconds": 32.504128}, "exception": null, "extra": {"ai": true, "operation": "generate_reply", "model": "glm-4-flash", "user_id": 1, "chat_group_id": 1, "response_time": 0.7538533210754395}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_ai_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 236, "message": "AI操作: generate_reply - glm-4-flash", "module": "logger", "name": "shared.logger", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:25.170429+08:00", "timestamp": 1750230925.170429}}}
{"text": "用户发送消息\n", "record": {"elapsed": {"repr": "0:00:55.554819", "seconds": 55.554819}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "chat_group_id": 1, "message_length": 14}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 374, "message": "用户发送消息", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:48.221120+08:00", "timestamp": 1750230948.22112}}}
{"text": "用户操作: test0(1) - send_message\n", "record": {"elapsed": {"repr": "0:00:55.555140", "seconds": 55.55514}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "send_message", "chat_group_id": 1, "message_length": 14}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - send_message", "module": "logger", "name": "shared.logger", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:48.221441+08:00", "timestamp": 1750230948.221441}}}
{"text": "AI生成回复\n", "record": {"elapsed": {"repr": "0:00:56.869436", "seconds": 56.869436}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "chat_group_id": 1, "response_time": 1.3091506958007812, "reply_length": 66}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_chat_message", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 403, "message": "AI生成回复", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:49.535737+08:00", "timestamp": 1750230949.535737}}}
{"text": "AI操作: generate_reply - glm-4-flash\n", "record": {"elapsed": {"repr": "0:00:56.870137", "seconds": 56.870137}, "exception": null, "extra": {"ai": true, "operation": "generate_reply", "model": "glm-4-flash", "user_id": 1, "chat_group_id": 1, "response_time": 1.3091506958007812}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_ai_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 236, "message": "AI操作: generate_reply - glm-4-flash", "module": "logger", "name": "shared.logger", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:15:49.536438+08:00", "timestamp": 1750230949.536438}}}
{"text": "用户操作: test0(1) - disconnect\n", "record": {"elapsed": {"repr": "0:32:35.872358", "seconds": 1955.872358}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:47:28.538659+08:00", "timestamp": 1750232848.538659}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:32:35.955687", "seconds": 1955.955687}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49040}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 190, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:47:28.621988+08:00", "timestamp": 1750232848.621988}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:32:35.957576", "seconds": 1955.957576}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666394887872, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-18 15:47:28.623877+08:00", "timestamp": 1750232848.623877}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:33:42.234313", "seconds": 2022.234313}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:48:34.900614+08:00", "timestamp": 1750232914.900614}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:33:42.251392", "seconds": 2022.251392}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 2608, "name": "MainProcess"}, "thread": {"id": 140666691856192, "name": "MainThread"}, "time": {"repr": "2025-06-18 15:48:34.917693+08:00", "timestamp": 1750232914.917693}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.498616", "seconds": 0.498616}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 34066, "name": "MainProcess"}, "thread": {"id": 140629872531264, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:07.849721+08:00", "timestamp": 1750240147.849721}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.498986", "seconds": 0.498986}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "__main__", "process": {"id": 34066, "name": "MainProcess"}, "thread": {"id": 140629872531264, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:07.850091+08:00", "timestamp": 1750240147.850091}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.502421", "seconds": 0.502421}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 34066, "name": "MainProcess"}, "thread": {"id": 140629872531264, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:07.853526+08:00", "timestamp": 1750240147.853526}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.106568", "seconds": 1.106568}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 34066, "name": "MainProcess"}, "thread": {"id": 140629872531264, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:08.457673+08:00", "timestamp": 1750240148.457673}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.107302", "seconds": 1.107302}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 34066, "name": "MainProcess"}, "thread": {"id": 140629872531264, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:08.458407+08:00", "timestamp": 1750240148.458407}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.109364", "seconds": 1.109364}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 34066, "name": "MainProcess"}, "thread": {"id": 140629872531264, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:08.460469+08:00", "timestamp": 1750240148.460469}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.110779", "seconds": 1.110779}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 34066, "name": "MainProcess"}, "thread": {"id": 140629872531264, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:08.461884+08:00", "timestamp": 1750240148.461884}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.111191", "seconds": 1.111191}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 34066, "name": "MainProcess"}, "thread": {"id": 140629872531264, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:08.462296+08:00", "timestamp": 1750240148.462296}}}
{"text": "服务器启动失败\n", "record": {"elapsed": {"repr": "0:00:01.117230", "seconds": 1.11723}, "exception": null, "extra": {"name": "server.core", "error": "[Errno 98] Address already in use", "exc_info": true}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "❌", "name": "ERROR", "no": 40}, "line": 129, "message": "服务器启动失败", "module": "server", "name": "server.core.server", "process": {"id": 34066, "name": "MainProcess"}, "thread": {"id": 140629872531264, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:08.468335+08:00", "timestamp": 1750240148.468335}}}
{"text": "网络事件: server_start_failed\n", "record": {"elapsed": {"repr": "0:00:01.117736", "seconds": 1.117736}, "exception": null, "extra": {"network": true, "event": "server_start_failed", "client_ip": null, "error": "[Errno 98] Address already in use"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_start_failed", "module": "logger", "name": "shared.logger", "process": {"id": 34066, "name": "MainProcess"}, "thread": {"id": 140629872531264, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:08.468841+08:00", "timestamp": 1750240148.468841}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:01.118435", "seconds": 1.118435}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 34066, "name": "MainProcess"}, "thread": {"id": 140629872531264, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:08.469540+08:00", "timestamp": 1750240148.46954}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.232865", "seconds": 0.232865}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:57.761693+08:00", "timestamp": 1750240197.761693}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.233197", "seconds": 0.233197}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": true}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "__main__", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:57.762025+08:00", "timestamp": 1750240197.762025}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.234031", "seconds": 0.234031}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:57.762859+08:00", "timestamp": 1750240197.762859}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.875177", "seconds": 0.875177}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:58.404005+08:00", "timestamp": 1750240198.404005}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.876265", "seconds": 0.876265}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:58.405093+08:00", "timestamp": 1750240198.405093}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.877482", "seconds": 0.877482}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:58.406310+08:00", "timestamp": 1750240198.40631}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.878095", "seconds": 0.878095}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:58.406923+08:00", "timestamp": 1750240198.406923}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.878278", "seconds": 0.878278}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:58.407106+08:00", "timestamp": 1750240198.407106}}}
{"text": "数据库操作: init - all_tables\n", "record": {"elapsed": {"repr": "0:00:00.878574", "seconds": 0.878574}, "exception": null, "extra": {"database": true, "operation": "init", "table": "all_tables"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_database_operation", "level": {"icon": "🐞", "name": "DEBUG", "no": 10}, "line": 225, "message": "数据库操作: init - all_tables", "module": "logger", "name": "shared.logger", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:58.407402+08:00", "timestamp": 1750240198.407402}}}
{"text": "服务器启动失败\n", "record": {"elapsed": {"repr": "0:00:00.883656", "seconds": 0.883656}, "exception": null, "extra": {"name": "server.core", "error": "[Errno 98] Address already in use", "exc_info": true}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "❌", "name": "ERROR", "no": 40}, "line": 129, "message": "服务器启动失败", "module": "server", "name": "server.core.server", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:58.412484+08:00", "timestamp": 1750240198.412484}}}
{"text": "网络事件: server_start_failed\n", "record": {"elapsed": {"repr": "0:00:00.884357", "seconds": 0.884357}, "exception": null, "extra": {"network": true, "event": "server_start_failed", "client_ip": null, "error": "[Errno 98] Address already in use"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_start_failed", "module": "logger", "name": "shared.logger", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:58.413185+08:00", "timestamp": 1750240198.413185}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:00.884861", "seconds": 0.884861}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 34246, "name": "MainProcess"}, "thread": {"id": 140556095743808, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:49:58.413689+08:00", "timestamp": 1750240198.413689}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.251916", "seconds": 0.251916}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 34608, "name": "MainProcess"}, "thread": {"id": 140454106842944, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:51:09.197390+08:00", "timestamp": 1750240269.19739}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.252324", "seconds": 0.252324}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8889, "debug": true}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "__main__", "process": {"id": 34608, "name": "MainProcess"}, "thread": {"id": 140454106842944, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:51:09.197798+08:00", "timestamp": 1750240269.197798}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.253565", "seconds": 0.253565}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 34608, "name": "MainProcess"}, "thread": {"id": 140454106842944, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:51:09.199039+08:00", "timestamp": 1750240269.199039}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.801049", "seconds": 1.801049}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8889, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 34608, "name": "MainProcess"}, "thread": {"id": 140454106842944, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:51:10.746523+08:00", "timestamp": 1750240270.746523}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.801706", "seconds": 1.801706}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 34608, "name": "MainProcess"}, "thread": {"id": 140454106842944, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:51:10.747180+08:00", "timestamp": 1750240270.74718}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.802491", "seconds": 1.802491}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 34608, "name": "MainProcess"}, "thread": {"id": 140454106842944, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:51:10.747965+08:00", "timestamp": 1750240270.747965}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.803466", "seconds": 1.803466}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 34608, "name": "MainProcess"}, "thread": {"id": 140454106842944, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:51:10.748940+08:00", "timestamp": 1750240270.74894}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.803750", "seconds": 1.80375}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 34608, "name": "MainProcess"}, "thread": {"id": 140454106842944, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:51:10.749224+08:00", "timestamp": 1750240270.749224}}}
{"text": "数据库操作: init - all_tables\n", "record": {"elapsed": {"repr": "0:00:01.804109", "seconds": 1.804109}, "exception": null, "extra": {"database": true, "operation": "init", "table": "all_tables"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_database_operation", "level": {"icon": "🐞", "name": "DEBUG", "no": 10}, "line": 225, "message": "数据库操作: init - all_tables", "module": "logger", "name": "shared.logger", "process": {"id": 34608, "name": "MainProcess"}, "thread": {"id": 140454106842944, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:51:10.749583+08:00", "timestamp": 1750240270.749583}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.806821", "seconds": 1.806821}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8889, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 102, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 34608, "name": "MainProcess"}, "thread": {"id": 140454106842944, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:51:10.752295+08:00", "timestamp": 1750240270.752295}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.807047", "seconds": 1.807047}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8889}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 34608, "name": "MainProcess"}, "thread": {"id": 140454106842944, "name": "MainThread"}, "time": {"repr": "2025-06-18 17:51:10.752521+08:00", "timestamp": 1750240270.752521}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.734775", "seconds": 0.734775}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:44.201721+08:00", "timestamp": 1750318184.201721}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.735082", "seconds": 0.735082}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:44.202028+08:00", "timestamp": 1750318184.202028}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.737914", "seconds": 0.737914}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:44.204860+08:00", "timestamp": 1750318184.20486}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.447404", "seconds": 1.447404}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:44.914350+08:00", "timestamp": 1750318184.91435}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.448355", "seconds": 1.448355}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:44.915301+08:00", "timestamp": 1750318184.915301}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.450039", "seconds": 1.450039}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:44.916985+08:00", "timestamp": 1750318184.916985}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.451667", "seconds": 1.451667}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:44.918613+08:00", "timestamp": 1750318184.918613}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.452109", "seconds": 1.452109}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:44.919055+08:00", "timestamp": 1750318184.919055}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.461759", "seconds": 1.461759}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 102, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:44.928705+08:00", "timestamp": 1750318184.928705}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.462118", "seconds": 1.462118}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:44.929064+08:00", "timestamp": 1750318184.929064}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:03.595928", "seconds": 3.595928}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:47.062874+08:00", "timestamp": 1750318187.062874}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:03.596731", "seconds": 3.596731}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 9732, "name": "MainProcess"}, "thread": {"id": 140375684298560, "name": "MainThread"}, "time": {"repr": "2025-06-19 15:29:47.063677+08:00", "timestamp": 1750318187.063677}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.313367", "seconds": 0.313367}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 5141, "name": "MainProcess"}, "thread": {"id": 140288077457216, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:10.210355+08:00", "timestamp": 1750321930.210355}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.313732", "seconds": 0.313732}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 5141, "name": "MainProcess"}, "thread": {"id": 140288077457216, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:10.210720+08:00", "timestamp": 1750321930.21072}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.316208", "seconds": 0.316208}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 5141, "name": "MainProcess"}, "thread": {"id": 140288077457216, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:10.213196+08:00", "timestamp": 1750321930.213196}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.970880", "seconds": 0.97088}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 5141, "name": "MainProcess"}, "thread": {"id": 140288077457216, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:10.867868+08:00", "timestamp": 1750321930.867868}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.972089", "seconds": 0.972089}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 5141, "name": "MainProcess"}, "thread": {"id": 140288077457216, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:10.869077+08:00", "timestamp": 1750321930.869077}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.978374", "seconds": 0.978374}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 5141, "name": "MainProcess"}, "thread": {"id": 140288077457216, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:10.875362+08:00", "timestamp": 1750321930.875362}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.980066", "seconds": 0.980066}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 5141, "name": "MainProcess"}, "thread": {"id": 140288077457216, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:10.877054+08:00", "timestamp": 1750321930.877054}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.980555", "seconds": 0.980555}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 5141, "name": "MainProcess"}, "thread": {"id": 140288077457216, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:10.877543+08:00", "timestamp": 1750321930.877543}}}
{"text": "服务器启动失败\n", "record": {"elapsed": {"repr": "0:00:00.991564", "seconds": 0.991564}, "exception": null, "extra": {"name": "server.core", "error": "[Errno 98] Address already in use", "exc_info": true}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "❌", "name": "ERROR", "no": 40}, "line": 129, "message": "服务器启动失败", "module": "server", "name": "server.core.server", "process": {"id": 5141, "name": "MainProcess"}, "thread": {"id": 140288077457216, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:10.888552+08:00", "timestamp": 1750321930.888552}}}
{"text": "网络事件: server_start_failed\n", "record": {"elapsed": {"repr": "0:00:00.992286", "seconds": 0.992286}, "exception": null, "extra": {"network": true, "event": "server_start_failed", "client_ip": null, "error": "[Errno 98] Address already in use"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_start_failed", "module": "logger", "name": "shared.logger", "process": {"id": 5141, "name": "MainProcess"}, "thread": {"id": 140288077457216, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:10.889274+08:00", "timestamp": 1750321930.889274}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:00.992669", "seconds": 0.992669}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 5141, "name": "MainProcess"}, "thread": {"id": 140288077457216, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:10.889657+08:00", "timestamp": 1750321930.889657}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.330197", "seconds": 0.330197}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 5353, "name": "MainProcess"}, "thread": {"id": 139757595457344, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:46.867834+08:00", "timestamp": 1750321966.867834}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.330489", "seconds": 0.330489}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 5353, "name": "MainProcess"}, "thread": {"id": 139757595457344, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:46.868126+08:00", "timestamp": 1750321966.868126}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.331260", "seconds": 0.33126}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 5353, "name": "MainProcess"}, "thread": {"id": 139757595457344, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:46.868897+08:00", "timestamp": 1750321966.868897}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.165947", "seconds": 1.165947}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 5353, "name": "MainProcess"}, "thread": {"id": 139757595457344, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:47.703584+08:00", "timestamp": 1750321967.703584}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.166324", "seconds": 1.166324}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 5353, "name": "MainProcess"}, "thread": {"id": 139757595457344, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:47.703961+08:00", "timestamp": 1750321967.703961}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.167123", "seconds": 1.167123}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 5353, "name": "MainProcess"}, "thread": {"id": 139757595457344, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:47.704760+08:00", "timestamp": 1750321967.70476}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.167798", "seconds": 1.167798}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 5353, "name": "MainProcess"}, "thread": {"id": 139757595457344, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:47.705435+08:00", "timestamp": 1750321967.705435}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.167997", "seconds": 1.167997}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 5353, "name": "MainProcess"}, "thread": {"id": 139757595457344, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:47.705634+08:00", "timestamp": 1750321967.705634}}}
{"text": "服务器启动失败\n", "record": {"elapsed": {"repr": "0:00:01.171250", "seconds": 1.17125}, "exception": null, "extra": {"name": "server.core", "error": "[Errno 98] Address already in use", "exc_info": true}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "❌", "name": "ERROR", "no": 40}, "line": 129, "message": "服务器启动失败", "module": "server", "name": "server.core.server", "process": {"id": 5353, "name": "MainProcess"}, "thread": {"id": 139757595457344, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:47.708887+08:00", "timestamp": 1750321967.708887}}}
{"text": "网络事件: server_start_failed\n", "record": {"elapsed": {"repr": "0:00:01.171749", "seconds": 1.171749}, "exception": null, "extra": {"network": true, "event": "server_start_failed", "client_ip": null, "error": "[Errno 98] Address already in use"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_start_failed", "module": "logger", "name": "shared.logger", "process": {"id": 5353, "name": "MainProcess"}, "thread": {"id": 139757595457344, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:47.709386+08:00", "timestamp": 1750321967.709386}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:01.171944", "seconds": 1.171944}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 5353, "name": "MainProcess"}, "thread": {"id": 139757595457344, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:32:47.709581+08:00", "timestamp": 1750321967.709581}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.226521", "seconds": 0.226521}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 5748, "name": "MainProcess"}, "thread": {"id": 140553948821312, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:19.387918+08:00", "timestamp": 1750322059.387918}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.226834", "seconds": 0.226834}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 5748, "name": "MainProcess"}, "thread": {"id": 140553948821312, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:19.388231+08:00", "timestamp": 1750322059.388231}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.227971", "seconds": 0.227971}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 5748, "name": "MainProcess"}, "thread": {"id": 140553948821312, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:19.389368+08:00", "timestamp": 1750322059.389368}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.766294", "seconds": 0.766294}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 5748, "name": "MainProcess"}, "thread": {"id": 140553948821312, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:19.927691+08:00", "timestamp": 1750322059.927691}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.766833", "seconds": 0.766833}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 5748, "name": "MainProcess"}, "thread": {"id": 140553948821312, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:19.928230+08:00", "timestamp": 1750322059.92823}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.767434", "seconds": 0.767434}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 5748, "name": "MainProcess"}, "thread": {"id": 140553948821312, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:19.928831+08:00", "timestamp": 1750322059.928831}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.768272", "seconds": 0.768272}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 5748, "name": "MainProcess"}, "thread": {"id": 140553948821312, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:19.929669+08:00", "timestamp": 1750322059.929669}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.768477", "seconds": 0.768477}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 5748, "name": "MainProcess"}, "thread": {"id": 140553948821312, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:19.929874+08:00", "timestamp": 1750322059.929874}}}
{"text": "服务器启动失败\n", "record": {"elapsed": {"repr": "0:00:00.772404", "seconds": 0.772404}, "exception": null, "extra": {"name": "server.core", "error": "[Errno 98] Address already in use", "exc_info": true}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "❌", "name": "ERROR", "no": 40}, "line": 129, "message": "服务器启动失败", "module": "server", "name": "server.core.server", "process": {"id": 5748, "name": "MainProcess"}, "thread": {"id": 140553948821312, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:19.933801+08:00", "timestamp": 1750322059.933801}}}
{"text": "网络事件: server_start_failed\n", "record": {"elapsed": {"repr": "0:00:00.772795", "seconds": 0.772795}, "exception": null, "extra": {"network": true, "event": "server_start_failed", "client_ip": null, "error": "[Errno 98] Address already in use"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_start_failed", "module": "logger", "name": "shared.logger", "process": {"id": 5748, "name": "MainProcess"}, "thread": {"id": 140553948821312, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:19.934192+08:00", "timestamp": 1750322059.934192}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:00.773554", "seconds": 0.773554}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 5748, "name": "MainProcess"}, "thread": {"id": 140553948821312, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:19.934951+08:00", "timestamp": 1750322059.934951}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.228189", "seconds": 0.228189}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:26.597148+08:00", "timestamp": 1750322066.597148}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.228506", "seconds": 0.228506}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": true}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:26.597465+08:00", "timestamp": 1750322066.597465}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.229541", "seconds": 0.229541}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:26.598500+08:00", "timestamp": 1750322066.5985}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.836997", "seconds": 0.836997}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:27.205956+08:00", "timestamp": 1750322067.205956}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.837527", "seconds": 0.837527}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:27.206486+08:00", "timestamp": 1750322067.206486}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.838294", "seconds": 0.838294}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:27.207253+08:00", "timestamp": 1750322067.207253}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.839207", "seconds": 0.839207}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:27.208166+08:00", "timestamp": 1750322067.208166}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.839440", "seconds": 0.83944}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:27.208399+08:00", "timestamp": 1750322067.208399}}}
{"text": "数据库操作: init - all_tables\n", "record": {"elapsed": {"repr": "0:00:00.839841", "seconds": 0.839841}, "exception": null, "extra": {"database": true, "operation": "init", "table": "all_tables"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_database_operation", "level": {"icon": "🐞", "name": "DEBUG", "no": 10}, "line": 225, "message": "数据库操作: init - all_tables", "module": "logger", "name": "shared.logger", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:27.208800+08:00", "timestamp": 1750322067.2088}}}
{"text": "服务器启动失败\n", "record": {"elapsed": {"repr": "0:00:00.842608", "seconds": 0.842608}, "exception": null, "extra": {"name": "server.core", "error": "[Errno 98] Address already in use", "exc_info": true}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "❌", "name": "ERROR", "no": 40}, "line": 129, "message": "服务器启动失败", "module": "server", "name": "server.core.server", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:27.211567+08:00", "timestamp": 1750322067.211567}}}
{"text": "网络事件: server_start_failed\n", "record": {"elapsed": {"repr": "0:00:00.843196", "seconds": 0.843196}, "exception": null, "extra": {"network": true, "event": "server_start_failed", "client_ip": null, "error": "[Errno 98] Address already in use"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_start_failed", "module": "logger", "name": "shared.logger", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:27.212155+08:00", "timestamp": 1750322067.212155}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:00.843581", "seconds": 0.843581}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 5813, "name": "MainProcess"}, "thread": {"id": 139858427950912, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:34:27.212540+08:00", "timestamp": 1750322067.21254}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.236240", "seconds": 0.23624}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:35:46.153706+08:00", "timestamp": 1750322146.153706}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.236560", "seconds": 0.23656}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8889, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:35:46.154026+08:00", "timestamp": 1750322146.154026}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.237435", "seconds": 0.237435}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:35:46.154901+08:00", "timestamp": 1750322146.154901}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.108526", "seconds": 1.108526}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8889, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:35:47.025992+08:00", "timestamp": 1750322147.025992}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.108915", "seconds": 1.108915}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:35:47.026381+08:00", "timestamp": 1750322147.026381}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.109461", "seconds": 1.109461}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:35:47.026927+08:00", "timestamp": 1750322147.026927}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.110181", "seconds": 1.110181}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:35:47.027647+08:00", "timestamp": 1750322147.027647}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.110404", "seconds": 1.110404}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:35:47.027870+08:00", "timestamp": 1750322147.02787}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.114757", "seconds": 1.114757}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8889, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 102, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:35:47.032223+08:00", "timestamp": 1750322147.032223}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.115147", "seconds": 1.115147}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8889}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:35:47.032613+08:00", "timestamp": 1750322147.032613}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:20.930469", "seconds": 20.930469}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:06.847935+08:00", "timestamp": 1750322166.847935}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:20.930883", "seconds": 20.930883}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 6234, "name": "MainProcess"}, "thread": {"id": 140176567789376, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:06.848349+08:00", "timestamp": 1750322166.848349}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.243733", "seconds": 0.243733}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 6477, "name": "MainProcess"}, "thread": {"id": 139763602499392, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:32.488564+08:00", "timestamp": 1750322192.488564}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.244061", "seconds": 0.244061}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 6477, "name": "MainProcess"}, "thread": {"id": 139763602499392, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:32.488892+08:00", "timestamp": 1750322192.488892}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.244961", "seconds": 0.244961}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 6477, "name": "MainProcess"}, "thread": {"id": 139763602499392, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:32.489792+08:00", "timestamp": 1750322192.489792}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.090705", "seconds": 1.090705}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 6477, "name": "MainProcess"}, "thread": {"id": 139763602499392, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:33.335536+08:00", "timestamp": 1750322193.335536}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.091190", "seconds": 1.09119}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 6477, "name": "MainProcess"}, "thread": {"id": 139763602499392, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:33.336021+08:00", "timestamp": 1750322193.336021}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.091748", "seconds": 1.091748}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 6477, "name": "MainProcess"}, "thread": {"id": 139763602499392, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:33.336579+08:00", "timestamp": 1750322193.336579}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.092471", "seconds": 1.092471}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 6477, "name": "MainProcess"}, "thread": {"id": 139763602499392, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:33.337302+08:00", "timestamp": 1750322193.337302}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.092680", "seconds": 1.09268}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 6477, "name": "MainProcess"}, "thread": {"id": 139763602499392, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:33.337511+08:00", "timestamp": 1750322193.337511}}}
{"text": "服务器启动失败\n", "record": {"elapsed": {"repr": "0:00:01.095652", "seconds": 1.095652}, "exception": null, "extra": {"name": "server.core", "error": "[Errno 98] Address already in use", "exc_info": true}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "❌", "name": "ERROR", "no": 40}, "line": 129, "message": "服务器启动失败", "module": "server", "name": "server.core.server", "process": {"id": 6477, "name": "MainProcess"}, "thread": {"id": 139763602499392, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:33.340483+08:00", "timestamp": 1750322193.340483}}}
{"text": "网络事件: server_start_failed\n", "record": {"elapsed": {"repr": "0:00:01.096052", "seconds": 1.096052}, "exception": null, "extra": {"network": true, "event": "server_start_failed", "client_ip": null, "error": "[Errno 98] Address already in use"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_start_failed", "module": "logger", "name": "shared.logger", "process": {"id": 6477, "name": "MainProcess"}, "thread": {"id": 139763602499392, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:33.340883+08:00", "timestamp": 1750322193.340883}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:01.096483", "seconds": 1.096483}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 139, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 6477, "name": "MainProcess"}, "thread": {"id": 139763602499392, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:36:33.341314+08:00", "timestamp": 1750322193.341314}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.244013", "seconds": 0.244013}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 6937, "name": "MainProcess"}, "thread": {"id": 139982291957568, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:01.569719+08:00", "timestamp": 1750322281.569719}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.244343", "seconds": 0.244343}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 6937, "name": "MainProcess"}, "thread": {"id": 139982291957568, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:01.570049+08:00", "timestamp": 1750322281.570049}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.245106", "seconds": 0.245106}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 6937, "name": "MainProcess"}, "thread": {"id": 139982291957568, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:01.570812+08:00", "timestamp": 1750322281.570812}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.458110", "seconds": 1.45811}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 6937, "name": "MainProcess"}, "thread": {"id": 139982291957568, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:02.783816+08:00", "timestamp": 1750322282.783816}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.459186", "seconds": 1.459186}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 6937, "name": "MainProcess"}, "thread": {"id": 139982291957568, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:02.784892+08:00", "timestamp": 1750322282.784892}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.460403", "seconds": 1.460403}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 6937, "name": "MainProcess"}, "thread": {"id": 139982291957568, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:02.786109+08:00", "timestamp": 1750322282.786109}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.461652", "seconds": 1.461652}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 6937, "name": "MainProcess"}, "thread": {"id": 139982291957568, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:02.787358+08:00", "timestamp": 1750322282.787358}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.462020", "seconds": 1.46202}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 6937, "name": "MainProcess"}, "thread": {"id": 139982291957568, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:02.787726+08:00", "timestamp": 1750322282.787726}}}
{"text": "服务器启动失败\n", "record": {"elapsed": {"repr": "0:00:01.467305", "seconds": 1.467305}, "exception": null, "extra": {"name": "server.core", "error": "[Errno 98] Address already in use", "exc_info": true}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "❌", "name": "ERROR", "no": 40}, "line": 135, "message": "服务器启动失败", "module": "server", "name": "server.core.server", "process": {"id": 6937, "name": "MainProcess"}, "thread": {"id": 139982291957568, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:02.793011+08:00", "timestamp": 1750322282.793011}}}
{"text": "网络事件: server_start_failed\n", "record": {"elapsed": {"repr": "0:00:01.467910", "seconds": 1.46791}, "exception": null, "extra": {"network": true, "event": "server_start_failed", "client_ip": null, "error": "[Errno 98] Address already in use"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_start_failed", "module": "logger", "name": "shared.logger", "process": {"id": 6937, "name": "MainProcess"}, "thread": {"id": 139982291957568, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:02.793616+08:00", "timestamp": 1750322282.793616}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:01.468318", "seconds": 1.468318}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 145, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 6937, "name": "MainProcess"}, "thread": {"id": 139982291957568, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:02.794024+08:00", "timestamp": 1750322282.794024}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.256059", "seconds": 0.256059}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 7044, "name": "MainProcess"}, "thread": {"id": 140142409275200, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:25.486578+08:00", "timestamp": 1750322305.486578}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.256541", "seconds": 0.256541}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 7044, "name": "MainProcess"}, "thread": {"id": 140142409275200, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:25.487060+08:00", "timestamp": 1750322305.48706}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.257423", "seconds": 0.257423}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 7044, "name": "MainProcess"}, "thread": {"id": 140142409275200, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:25.487942+08:00", "timestamp": 1750322305.487942}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.922761", "seconds": 0.922761}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 7044, "name": "MainProcess"}, "thread": {"id": 140142409275200, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:26.153280+08:00", "timestamp": 1750322306.15328}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.924172", "seconds": 0.924172}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 7044, "name": "MainProcess"}, "thread": {"id": 140142409275200, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:26.154691+08:00", "timestamp": 1750322306.154691}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.925827", "seconds": 0.925827}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 7044, "name": "MainProcess"}, "thread": {"id": 140142409275200, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:26.156346+08:00", "timestamp": 1750322306.156346}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.927487", "seconds": 0.927487}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 7044, "name": "MainProcess"}, "thread": {"id": 140142409275200, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:26.158006+08:00", "timestamp": 1750322306.158006}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.927941", "seconds": 0.927941}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 7044, "name": "MainProcess"}, "thread": {"id": 140142409275200, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:26.158460+08:00", "timestamp": 1750322306.15846}}}
{"text": "服务器启动失败\n", "record": {"elapsed": {"repr": "0:00:00.934282", "seconds": 0.934282}, "exception": null, "extra": {"name": "server.core", "error": "[Errno 98] Address already in use", "exc_info": true}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "❌", "name": "ERROR", "no": 40}, "line": 135, "message": "服务器启动失败", "module": "server", "name": "server.core.server", "process": {"id": 7044, "name": "MainProcess"}, "thread": {"id": 140142409275200, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:26.164801+08:00", "timestamp": 1750322306.164801}}}
{"text": "网络事件: server_start_failed\n", "record": {"elapsed": {"repr": "0:00:00.934935", "seconds": 0.934935}, "exception": null, "extra": {"network": true, "event": "server_start_failed", "client_ip": null, "error": "[Errno 98] Address already in use"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_start_failed", "module": "logger", "name": "shared.logger", "process": {"id": 7044, "name": "MainProcess"}, "thread": {"id": 140142409275200, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:26.165454+08:00", "timestamp": 1750322306.165454}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:00.936037", "seconds": 0.936037}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 145, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 7044, "name": "MainProcess"}, "thread": {"id": 140142409275200, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:26.166556+08:00", "timestamp": 1750322306.166556}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.257841", "seconds": 0.257841}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:44.645305+08:00", "timestamp": 1750322324.645305}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.258241", "seconds": 0.258241}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8890, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:44.645705+08:00", "timestamp": 1750322324.645705}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.259407", "seconds": 0.259407}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:44.646871+08:00", "timestamp": 1750322324.646871}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.978440", "seconds": 0.97844}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8890, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:45.365904+08:00", "timestamp": 1750322325.365904}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.979505", "seconds": 0.979505}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:45.366969+08:00", "timestamp": 1750322325.366969}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.981444", "seconds": 0.981444}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:45.368908+08:00", "timestamp": 1750322325.368908}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.984416", "seconds": 0.984416}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:45.371880+08:00", "timestamp": 1750322325.37188}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.985361", "seconds": 0.985361}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:45.372825+08:00", "timestamp": 1750322325.372825}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:00.997451", "seconds": 0.997451}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8890, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 108, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:45.384915+08:00", "timestamp": 1750322325.384915}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:00.998073", "seconds": 0.998073}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8890}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:38:45.385537+08:00", "timestamp": 1750322325.385537}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:29.655652", "seconds": 29.655652}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 145, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:39:14.043116+08:00", "timestamp": 1750322354.043116}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:29.656012", "seconds": 29.656012}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 145, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 7129, "name": "MainProcess"}, "thread": {"id": 140048121583424, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:39:14.043476+08:00", "timestamp": 1750322354.043476}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.241551", "seconds": 0.241551}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:22.708890+08:00", "timestamp": 1750322422.70889}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.241876", "seconds": 0.241876}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8890, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:22.709215+08:00", "timestamp": 1750322422.709215}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.242544", "seconds": 0.242544}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:22.709883+08:00", "timestamp": 1750322422.709883}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.903044", "seconds": 0.903044}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8890, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:23.370383+08:00", "timestamp": 1750322423.370383}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.903675", "seconds": 0.903675}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:23.371014+08:00", "timestamp": 1750322423.371014}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.904584", "seconds": 0.904584}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:23.371923+08:00", "timestamp": 1750322423.371923}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.905738", "seconds": 0.905738}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:23.373077+08:00", "timestamp": 1750322423.373077}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.906095", "seconds": 0.906095}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:23.373434+08:00", "timestamp": 1750322423.373434}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:00.910735", "seconds": 0.910735}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8890, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 108, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:23.378074+08:00", "timestamp": 1750322423.378074}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:00.911084", "seconds": 0.911084}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8890}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:23.378423+08:00", "timestamp": 1750322423.378423}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:21.750368", "seconds": 21.750368}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 145, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:44.217707+08:00", "timestamp": 1750322444.217707}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:21.750667", "seconds": 21.750667}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 145, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 7484, "name": "MainProcess"}, "thread": {"id": 140474214041408, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:40:44.218006+08:00", "timestamp": 1750322444.218006}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.236708", "seconds": 0.236708}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 7698, "name": "MainProcess"}, "thread": {"id": 140022397605696, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:41:10.682316+08:00", "timestamp": 1750322470.682316}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.237012", "seconds": 0.237012}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 7698, "name": "MainProcess"}, "thread": {"id": 140022397605696, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:41:10.682620+08:00", "timestamp": 1750322470.68262}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.237858", "seconds": 0.237858}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 7698, "name": "MainProcess"}, "thread": {"id": 140022397605696, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:41:10.683466+08:00", "timestamp": 1750322470.683466}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:03.034282", "seconds": 3.034282}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 7698, "name": "MainProcess"}, "thread": {"id": 140022397605696, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:41:13.479890+08:00", "timestamp": 1750322473.47989}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:03.034707", "seconds": 3.034707}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 7698, "name": "MainProcess"}, "thread": {"id": 140022397605696, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:41:13.480315+08:00", "timestamp": 1750322473.480315}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:03.035287", "seconds": 3.035287}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 7698, "name": "MainProcess"}, "thread": {"id": 140022397605696, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:41:13.480895+08:00", "timestamp": 1750322473.480895}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:03.035878", "seconds": 3.035878}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 7698, "name": "MainProcess"}, "thread": {"id": 140022397605696, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:41:13.481486+08:00", "timestamp": 1750322473.481486}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:03.036083", "seconds": 3.036083}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 7698, "name": "MainProcess"}, "thread": {"id": 140022397605696, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:41:13.481691+08:00", "timestamp": 1750322473.481691}}}
{"text": "服务器启动失败\n", "record": {"elapsed": {"repr": "0:00:03.048291", "seconds": 3.048291}, "exception": null, "extra": {"name": "server.core", "error": "[Errno 98] Address already in use", "exc_info": true}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "❌", "name": "ERROR", "no": 40}, "line": 135, "message": "服务器启动失败", "module": "server", "name": "server.core.server", "process": {"id": 7698, "name": "MainProcess"}, "thread": {"id": 140022397605696, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:41:13.493899+08:00", "timestamp": 1750322473.493899}}}
{"text": "网络事件: server_start_failed\n", "record": {"elapsed": {"repr": "0:00:03.049926", "seconds": 3.049926}, "exception": null, "extra": {"network": true, "event": "server_start_failed", "client_ip": null, "error": "[Errno 98] Address already in use"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_start_failed", "module": "logger", "name": "shared.logger", "process": {"id": 7698, "name": "MainProcess"}, "thread": {"id": 140022397605696, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:41:13.495534+08:00", "timestamp": 1750322473.495534}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:03.050769", "seconds": 3.050769}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 145, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 7698, "name": "MainProcess"}, "thread": {"id": 140022397605696, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:41:13.496377+08:00", "timestamp": 1750322473.496377}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.264222", "seconds": 0.264222}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:25.558612+08:00", "timestamp": 1750322545.558612}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.264549", "seconds": 0.264549}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:25.558939+08:00", "timestamp": 1750322545.558939}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.265315", "seconds": 0.265315}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:25.559705+08:00", "timestamp": 1750322545.559705}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.310525", "seconds": 1.310525}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:26.604915+08:00", "timestamp": 1750322546.604915}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.311534", "seconds": 1.311534}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:26.605924+08:00", "timestamp": 1750322546.605924}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.312768", "seconds": 1.312768}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:26.607158+08:00", "timestamp": 1750322546.607158}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.314171", "seconds": 1.314171}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:26.608561+08:00", "timestamp": 1750322546.608561}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.314603", "seconds": 1.314603}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:26.608993+08:00", "timestamp": 1750322546.608993}}}
{"text": "原端口 8888 被占用，使用端口 8889\n", "record": {"elapsed": {"repr": "0:00:01.333072", "seconds": 1.333072}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 113, "message": "原端口 8888 被占用，使用端口 8889", "module": "server", "name": "server.core.server", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:26.627462+08:00", "timestamp": 1750322546.627462}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.333587", "seconds": 1.333587}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8889, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 128, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:26.627977+08:00", "timestamp": 1750322546.627977}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.333842", "seconds": 1.333842}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8889}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:26.628232+08:00", "timestamp": 1750322546.628232}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:24.043352", "seconds": 24.043352}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:49.337742+08:00", "timestamp": 1750322569.337742}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:24.043686", "seconds": 24.043686}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 8070, "name": "MainProcess"}, "thread": {"id": 139673761146688, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:42:49.338076+08:00", "timestamp": 1750322569.338076}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.236075", "seconds": 0.236075}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 8292, "name": "MainProcess"}, "thread": {"id": 140052654352192, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:18.523298+08:00", "timestamp": 1750322598.523298}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.236376", "seconds": 0.236376}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 114514, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 8292, "name": "MainProcess"}, "thread": {"id": 140052654352192, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:18.523599+08:00", "timestamp": 1750322598.523599}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.237043", "seconds": 0.237043}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 8292, "name": "MainProcess"}, "thread": {"id": 140052654352192, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:18.524266+08:00", "timestamp": 1750322598.524266}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.009072", "seconds": 1.009072}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 114514, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 8292, "name": "MainProcess"}, "thread": {"id": 140052654352192, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:19.296295+08:00", "timestamp": 1750322599.296295}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.009553", "seconds": 1.009553}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 8292, "name": "MainProcess"}, "thread": {"id": 140052654352192, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:19.296776+08:00", "timestamp": 1750322599.296776}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.009972", "seconds": 1.009972}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 8292, "name": "MainProcess"}, "thread": {"id": 140052654352192, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:19.297195+08:00", "timestamp": 1750322599.297195}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.010509", "seconds": 1.010509}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 8292, "name": "MainProcess"}, "thread": {"id": 140052654352192, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:19.297732+08:00", "timestamp": 1750322599.297732}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.010680", "seconds": 1.01068}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 8292, "name": "MainProcess"}, "thread": {"id": 140052654352192, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:19.297903+08:00", "timestamp": 1750322599.297903}}}
{"text": "服务器启动失败\n", "record": {"elapsed": {"repr": "0:00:01.011151", "seconds": 1.011151}, "exception": null, "extra": {"name": "server.core", "error": "bind(): port must be 0-65535.", "exc_info": true}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "❌", "name": "ERROR", "no": 40}, "line": 155, "message": "服务器启动失败", "module": "server", "name": "server.core.server", "process": {"id": 8292, "name": "MainProcess"}, "thread": {"id": 140052654352192, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:19.298374+08:00", "timestamp": 1750322599.298374}}}
{"text": "网络事件: server_start_failed\n", "record": {"elapsed": {"repr": "0:00:01.011541", "seconds": 1.011541}, "exception": null, "extra": {"network": true, "event": "server_start_failed", "client_ip": null, "error": "bind(): port must be 0-65535."}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_start_failed", "module": "logger", "name": "shared.logger", "process": {"id": 8292, "name": "MainProcess"}, "thread": {"id": 140052654352192, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:19.298764+08:00", "timestamp": 1750322599.298764}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:01.012121", "seconds": 1.012121}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 8292, "name": "MainProcess"}, "thread": {"id": 140052654352192, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:19.299344+08:00", "timestamp": 1750322599.299344}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.240352", "seconds": 0.240352}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:45.286061+08:00", "timestamp": 1750322625.286061}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.240636", "seconds": 0.240636}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 9000, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:45.286345+08:00", "timestamp": 1750322625.286345}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.241300", "seconds": 0.2413}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:45.287009+08:00", "timestamp": 1750322625.287009}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.814785", "seconds": 0.814785}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 9000, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:45.860494+08:00", "timestamp": 1750322625.860494}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.815497", "seconds": 0.815497}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:45.861206+08:00", "timestamp": 1750322625.861206}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.817009", "seconds": 0.817009}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:45.862718+08:00", "timestamp": 1750322625.862718}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.818814", "seconds": 0.818814}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:45.864523+08:00", "timestamp": 1750322625.864523}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.819310", "seconds": 0.81931}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:45.865019+08:00", "timestamp": 1750322625.865019}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:00.826235", "seconds": 0.826235}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 9000, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 128, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:45.871944+08:00", "timestamp": 1750322625.871944}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:00.826544", "seconds": 0.826544}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 9000}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:45.872253+08:00", "timestamp": 1750322625.872253}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:02.464135", "seconds": 2.464135}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:47.509844+08:00", "timestamp": 1750322627.509844}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:02.464637", "seconds": 2.464637}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 8407, "name": "MainProcess"}, "thread": {"id": 140595680950080, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:47.510346+08:00", "timestamp": 1750322627.510346}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.241903", "seconds": 0.241903}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:55.733474+08:00", "timestamp": 1750322635.733474}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.242158", "seconds": 0.242158}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:55.733729+08:00", "timestamp": 1750322635.733729}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.242793", "seconds": 0.242793}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:55.734364+08:00", "timestamp": 1750322635.734364}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.845513", "seconds": 0.845513}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:56.337084+08:00", "timestamp": 1750322636.337084}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.845913", "seconds": 0.845913}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:56.337484+08:00", "timestamp": 1750322636.337484}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.846510", "seconds": 0.84651}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:56.338081+08:00", "timestamp": 1750322636.338081}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.847161", "seconds": 0.847161}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:56.338732+08:00", "timestamp": 1750322636.338732}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.847339", "seconds": 0.847339}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:56.338910+08:00", "timestamp": 1750322636.33891}}}
{"text": "原端口 8888 被占用，使用端口 8889\n", "record": {"elapsed": {"repr": "0:00:00.861602", "seconds": 0.861602}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 113, "message": "原端口 8888 被占用，使用端口 8889", "module": "server", "name": "server.core.server", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:56.353173+08:00", "timestamp": 1750322636.353173}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:00.862013", "seconds": 0.862013}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8889, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 128, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:56.353584+08:00", "timestamp": 1750322636.353584}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:00.862214", "seconds": 0.862214}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8889}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:43:56.353785+08:00", "timestamp": 1750322636.353785}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:47.786151", "seconds": 47.786151}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:44:43.277722+08:00", "timestamp": 1750322683.277722}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:47.786813", "seconds": 47.786813}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 8493, "name": "MainProcess"}, "thread": {"id": 139824103737152, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:44:43.278384+08:00", "timestamp": 1750322683.278384}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.352868", "seconds": 0.352868}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:20.240916+08:00", "timestamp": 1750323260.240916}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.353153", "seconds": 0.353153}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:20.241201+08:00", "timestamp": 1750323260.241201}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.355805", "seconds": 0.355805}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:20.243853+08:00", "timestamp": 1750323260.243853}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.080742", "seconds": 1.080742}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:20.968790+08:00", "timestamp": 1750323260.96879}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.081609", "seconds": 1.081609}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:20.969657+08:00", "timestamp": 1750323260.969657}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.083162", "seconds": 1.083162}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:20.971210+08:00", "timestamp": 1750323260.97121}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.084662", "seconds": 1.084662}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:20.972710+08:00", "timestamp": 1750323260.97271}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.085141", "seconds": 1.085141}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:20.973189+08:00", "timestamp": 1750323260.973189}}}
{"text": "原端口 8888 被占用，使用端口 8889\n", "record": {"elapsed": {"repr": "0:00:01.105636", "seconds": 1.105636}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 113, "message": "原端口 8888 被占用，使用端口 8889", "module": "server", "name": "server.core.server", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:20.993684+08:00", "timestamp": 1750323260.993684}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.106578", "seconds": 1.106578}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8889, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 128, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:20.994626+08:00", "timestamp": 1750323260.994626}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.107182", "seconds": 1.107182}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8889}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:20.995230+08:00", "timestamp": 1750323260.99523}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:04.150341", "seconds": 4.150341}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:24.038389+08:00", "timestamp": 1750323264.038389}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:04.150742", "seconds": 4.150742}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 1502, "name": "MainProcess"}, "thread": {"id": 140592960919360, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:54:24.038790+08:00", "timestamp": 1750323264.03879}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.263274", "seconds": 0.263274}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:37.123053+08:00", "timestamp": 1750323397.123053}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.263590", "seconds": 0.26359}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:37.123369+08:00", "timestamp": 1750323397.123369}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.264295", "seconds": 0.264295}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:37.124074+08:00", "timestamp": 1750323397.124074}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.900149", "seconds": 0.900149}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:37.759928+08:00", "timestamp": 1750323397.759928}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.900659", "seconds": 0.900659}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:37.760438+08:00", "timestamp": 1750323397.760438}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.901811", "seconds": 0.901811}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:37.761590+08:00", "timestamp": 1750323397.76159}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.902836", "seconds": 0.902836}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:37.762615+08:00", "timestamp": 1750323397.762615}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.903187", "seconds": 0.903187}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:37.762966+08:00", "timestamp": 1750323397.762966}}}
{"text": "原端口 8888 被占用，使用端口 8889\n", "record": {"elapsed": {"repr": "0:00:00.920949", "seconds": 0.920949}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 113, "message": "原端口 8888 被占用，使用端口 8889", "module": "server", "name": "server.core.server", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:37.780728+08:00", "timestamp": 1750323397.780728}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:00.921400", "seconds": 0.9214}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8889, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 128, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:37.781179+08:00", "timestamp": 1750323397.781179}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:00.921643", "seconds": 0.921643}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8889}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:37.781422+08:00", "timestamp": 1750323397.781422}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:11.524800", "seconds": 11.5248}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:48.384579+08:00", "timestamp": 1750323408.384579}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:11.525683", "seconds": 11.525683}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 3346, "name": "MainProcess"}, "thread": {"id": 139761405794112, "name": "MainThread"}, "time": {"repr": "2025-06-19 16:56:48.385462+08:00", "timestamp": 1750323408.385462}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.358782", "seconds": 0.358782}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:01.207429+08:00", "timestamp": 1750323721.207429}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.359091", "seconds": 0.359091}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:01.207738+08:00", "timestamp": 1750323721.207738}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.362220", "seconds": 0.36222}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:01.210867+08:00", "timestamp": 1750323721.210867}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.324754", "seconds": 1.324754}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:02.173401+08:00", "timestamp": 1750323722.173401}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.325954", "seconds": 1.325954}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:02.174601+08:00", "timestamp": 1750323722.174601}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.327733", "seconds": 1.327733}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:02.176380+08:00", "timestamp": 1750323722.17638}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.328618", "seconds": 1.328618}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:02.177265+08:00", "timestamp": 1750323722.177265}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.328864", "seconds": 1.328864}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:02.177511+08:00", "timestamp": 1750323722.177511}}}
{"text": "原端口 8888 被占用，使用端口 8889\n", "record": {"elapsed": {"repr": "0:00:01.346152", "seconds": 1.346152}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 113, "message": "原端口 8888 被占用，使用端口 8889", "module": "server", "name": "server.core.server", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:02.194799+08:00", "timestamp": 1750323722.194799}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.346748", "seconds": 1.346748}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8889, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 128, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:02.195395+08:00", "timestamp": 1750323722.195395}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.347057", "seconds": 1.347057}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8889}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:02.195704+08:00", "timestamp": 1750323722.195704}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:18.248109", "seconds": 18.248109}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:19.096756+08:00", "timestamp": 1750323739.096756}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:18.248802", "seconds": 18.248802}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 4897, "name": "MainProcess"}, "thread": {"id": 140109293078336, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:19.097449+08:00", "timestamp": 1750323739.097449}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.224702", "seconds": 0.224702}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:27.910228+08:00", "timestamp": 1750323747.910228}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.224977", "seconds": 0.224977}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:27.910503+08:00", "timestamp": 1750323747.910503}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.225649", "seconds": 0.225649}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:27.911175+08:00", "timestamp": 1750323747.911175}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.845625", "seconds": 0.845625}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:28.531151+08:00", "timestamp": 1750323748.531151}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.846704", "seconds": 0.846704}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:28.532230+08:00", "timestamp": 1750323748.53223}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.848001", "seconds": 0.848001}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:28.533527+08:00", "timestamp": 1750323748.533527}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.849773", "seconds": 0.849773}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:28.535299+08:00", "timestamp": 1750323748.535299}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.850276", "seconds": 0.850276}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:28.535802+08:00", "timestamp": 1750323748.535802}}}
{"text": "原端口 8888 被占用，使用端口 8889\n", "record": {"elapsed": {"repr": "0:00:00.868297", "seconds": 0.868297}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 113, "message": "原端口 8888 被占用，使用端口 8889", "module": "server", "name": "server.core.server", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:28.553823+08:00", "timestamp": 1750323748.553823}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:00.868734", "seconds": 0.868734}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8889, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 128, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:28.554260+08:00", "timestamp": 1750323748.55426}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:00.868977", "seconds": 0.868977}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8889}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:02:28.554503+08:00", "timestamp": 1750323748.554503}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:02:53.490592", "seconds": 173.490592}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:05:21.176118+08:00", "timestamp": 1750323921.176118}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:02:53.494670", "seconds": 173.49467}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 165, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 4997, "name": "MainProcess"}, "thread": {"id": 140542183606080, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:05:21.180196+08:00", "timestamp": 1750323921.180196}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.504152", "seconds": 0.504152}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:06:45.030914+08:00", "timestamp": 1750324005.030914}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.504526", "seconds": 0.504526}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:06:45.031288+08:00", "timestamp": 1750324005.031288}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.508212", "seconds": 0.508212}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:06:45.034974+08:00", "timestamp": 1750324005.034974}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.641932", "seconds": 1.641932}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:06:46.168694+08:00", "timestamp": 1750324006.168694}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.642400", "seconds": 1.6424}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:06:46.169162+08:00", "timestamp": 1750324006.169162}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.643327", "seconds": 1.643327}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:06:46.170089+08:00", "timestamp": 1750324006.170089}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.644007", "seconds": 1.644007}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:06:46.170769+08:00", "timestamp": 1750324006.170769}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.644206", "seconds": 1.644206}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:06:46.170968+08:00", "timestamp": 1750324006.170968}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.646859", "seconds": 1.646859}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 109, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:06:46.173621+08:00", "timestamp": 1750324006.173621}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.647288", "seconds": 1.647288}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:06:46.174050+08:00", "timestamp": 1750324006.17405}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:23.980209", "seconds": 23.980209}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:08.506971+08:00", "timestamp": 1750324028.506971}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:23.980648", "seconds": 23.980648}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 6126, "name": "MainProcess"}, "thread": {"id": 140457245230912, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:08.507410+08:00", "timestamp": 1750324028.50741}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.245227", "seconds": 0.245227}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:50.205716+08:00", "timestamp": 1750324070.205716}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.245550", "seconds": 0.24555}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:50.206039+08:00", "timestamp": 1750324070.206039}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.246373", "seconds": 0.246373}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:50.206862+08:00", "timestamp": 1750324070.206862}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.826100", "seconds": 0.8261}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:50.786589+08:00", "timestamp": 1750324070.786589}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.826542", "seconds": 0.826542}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:50.787031+08:00", "timestamp": 1750324070.787031}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.827182", "seconds": 0.827182}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:50.787671+08:00", "timestamp": 1750324070.787671}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.827820", "seconds": 0.82782}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:50.788309+08:00", "timestamp": 1750324070.788309}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.828024", "seconds": 0.828024}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:50.788513+08:00", "timestamp": 1750324070.788513}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:00.832361", "seconds": 0.832361}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 109, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:50.792850+08:00", "timestamp": 1750324070.79285}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:00.832575", "seconds": 0.832575}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:50.793064+08:00", "timestamp": 1750324070.793064}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:03.275801", "seconds": 3.275801}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:53.236290+08:00", "timestamp": 1750324073.23629}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:03.276242", "seconds": 3.276242}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 6399, "name": "MainProcess"}, "thread": {"id": 139666210158400, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:07:53.236731+08:00", "timestamp": 1750324073.236731}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.351177", "seconds": 0.351177}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:08:47.941242+08:00", "timestamp": 1750324127.941242}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.351505", "seconds": 0.351505}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:08:47.941570+08:00", "timestamp": 1750324127.94157}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.355225", "seconds": 0.355225}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:08:47.945290+08:00", "timestamp": 1750324127.94529}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.667029", "seconds": 1.667029}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:08:49.257094+08:00", "timestamp": 1750324129.257094}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.668081", "seconds": 1.668081}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:08:49.258146+08:00", "timestamp": 1750324129.258146}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.669959", "seconds": 1.669959}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:08:49.260024+08:00", "timestamp": 1750324129.260024}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.671669", "seconds": 1.671669}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:08:49.261734+08:00", "timestamp": 1750324129.261734}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.672160", "seconds": 1.67216}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:08:49.262225+08:00", "timestamp": 1750324129.262225}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.677144", "seconds": 1.677144}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 109, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:08:49.267209+08:00", "timestamp": 1750324129.267209}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.677533", "seconds": 1.677533}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:08:49.267598+08:00", "timestamp": 1750324129.267598}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:35.711068", "seconds": 35.711068}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48776}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:09:23.301133+08:00", "timestamp": 1750324163.301133}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:35.711785", "seconds": 35.711785}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48776}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:09:23.301850+08:00", "timestamp": 1750324163.30185}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:50.102807", "seconds": 50.102807}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142282004160, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:09:37.692872+08:00", "timestamp": 1750324177.692872}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:50.106311", "seconds": 50.106311}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 296, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142282004160, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:09:37.696376+08:00", "timestamp": 1750324177.696376}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:00:50.106600", "seconds": 50.1066}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142282004160, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:09:37.696665+08:00", "timestamp": 1750324177.696665}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:50.106776", "seconds": 50.106776}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142282004160, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:09:37.696841+08:00", "timestamp": 1750324177.696841}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:06.253401", "seconds": 66.253401}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46290}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:09:53.843466+08:00", "timestamp": 1750324193.843466}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:06.253673", "seconds": 66.253673}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 46290}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:09:53.843738+08:00", "timestamp": 1750324193.843738}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:13.608115", "seconds": 73.608115}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:10:01.198180+08:00", "timestamp": 1750324201.19818}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:13.613761", "seconds": 73.613761}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 296, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:10:01.203826+08:00", "timestamp": 1750324201.203826}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:01:13.614130", "seconds": 73.61413}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:10:01.204195+08:00", "timestamp": 1750324201.204195}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:13.614608", "seconds": 73.614608}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:10:01.204673+08:00", "timestamp": 1750324201.204673}}}
{"text": "用户主动登出\n", "record": {"elapsed": {"repr": "0:01:26.966180", "seconds": 86.96618}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_logout", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 702, "message": "用户主动登出", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:10:14.556245+08:00", "timestamp": 1750324214.556245}}}
{"text": "用户操作: test0(1) - logout\n", "record": {"elapsed": {"repr": "0:01:26.966571", "seconds": 86.966571}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "logout"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - logout", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:10:14.556636+08:00", "timestamp": 1750324214.556636}}}
{"text": "客户端连接重置\n", "record": {"elapsed": {"repr": "0:01:26.972869", "seconds": 86.972869}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46290}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 180, "message": "客户端连接重置", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:10:14.562934+08:00", "timestamp": 1750324214.562934}}}
{"text": "网络事件: client_connection_reset\n", "record": {"elapsed": {"repr": "0:01:26.973297", "seconds": 86.973297}, "exception": null, "extra": {"network": true, "event": "client_connection_reset", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connection_reset", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:10:14.563362+08:00", "timestamp": 1750324214.563362}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:02:53.325600", "seconds": 173.3256}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48446}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:11:40.915665+08:00", "timestamp": 1750324300.915665}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:02:53.326014", "seconds": 173.326014}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48446}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:11:40.916079+08:00", "timestamp": 1750324300.916079}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:02:59.205179", "seconds": 179.205179}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:11:46.795244+08:00", "timestamp": 1750324306.795244}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:02:59.214138", "seconds": 179.214138}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 296, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:11:46.804203+08:00", "timestamp": 1750324306.804203}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:02:59.214520", "seconds": 179.21452}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:11:46.804585+08:00", "timestamp": 1750324306.804585}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:02:59.215011", "seconds": 179.215011}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142273611456, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:11:46.805076+08:00", "timestamp": 1750324306.805076}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.385978", "seconds": 0.385978}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:13.766500+08:00", "timestamp": 1750324633.7665}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.386677", "seconds": 0.386677}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "__main__", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:13.767199+08:00", "timestamp": 1750324633.767199}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.395011", "seconds": 0.395011}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:13.775533+08:00", "timestamp": 1750324633.775533}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.450229", "seconds": 1.450229}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:14.830751+08:00", "timestamp": 1750324634.830751}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.450825", "seconds": 1.450825}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:14.831347+08:00", "timestamp": 1750324634.831347}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.451640", "seconds": 1.45164}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:14.832162+08:00", "timestamp": 1750324634.832162}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.452270", "seconds": 1.45227}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:14.832792+08:00", "timestamp": 1750324634.832792}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.452470", "seconds": 1.45247}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:14.832992+08:00", "timestamp": 1750324634.832992}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.463440", "seconds": 1.46344}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 109, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:14.843962+08:00", "timestamp": 1750324634.843962}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.463771", "seconds": 1.463771}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:14.844293+08:00", "timestamp": 1750324634.844293}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:18.378702", "seconds": 18.378702}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49538}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:31.759224+08:00", "timestamp": 1750324651.759224}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:18.378992", "seconds": 18.378992}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 49538}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:17:31.759514+08:00", "timestamp": 1750324651.759514}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:00:45.260800", "seconds": 45.2608}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49538}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 197, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666630534848, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:17:58.641322+08:00", "timestamp": 1750324678.641322}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:00:45.261319", "seconds": 45.261319}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666630534848, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:17:58.641841+08:00", "timestamp": 1750324678.641841}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:47.646153", "seconds": 47.646153}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:18:01.026675+08:00", "timestamp": 1750324681.026675}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:00:47.646820", "seconds": 47.64682}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 8708, "name": "MainProcess"}, "thread": {"id": 140666723792704, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:18:01.027342+08:00", "timestamp": 1750324681.027342}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:09:22.514478", "seconds": 562.514478}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:18:10.104543+08:00", "timestamp": 1750324690.104543}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:09:22.535775", "seconds": 562.535775}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 6707, "name": "MainProcess"}, "thread": {"id": 140142577305408, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:18:10.125840+08:00", "timestamp": 1750324690.12584}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.340754", "seconds": 0.340754}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:31.743568+08:00", "timestamp": 1750324771.743568}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.341036", "seconds": 0.341036}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:31.743850+08:00", "timestamp": 1750324771.74385}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.341702", "seconds": 0.341702}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:31.744516+08:00", "timestamp": 1750324771.744516}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.991036", "seconds": 0.991036}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:32.393850+08:00", "timestamp": 1750324772.39385}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.992069", "seconds": 0.992069}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:32.394883+08:00", "timestamp": 1750324772.394883}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.993474", "seconds": 0.993474}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:32.396288+08:00", "timestamp": 1750324772.396288}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.994135", "seconds": 0.994135}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:32.396949+08:00", "timestamp": 1750324772.396949}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.994321", "seconds": 0.994321}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:32.397135+08:00", "timestamp": 1750324772.397135}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:00.998916", "seconds": 0.998916}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 109, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:32.401730+08:00", "timestamp": 1750324772.40173}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:00.999227", "seconds": 0.999227}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:32.402041+08:00", "timestamp": 1750324772.402041}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:07.086580", "seconds": 7.08658}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47796}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:38.489394+08:00", "timestamp": 1750324778.489394}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:07.086884", "seconds": 7.086884}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47796}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:19:38.489698+08:00", "timestamp": 1750324778.489698}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:19.668692", "seconds": 19.668692}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:19:51.071506+08:00", "timestamp": 1750324791.071506}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:19.672053", "seconds": 19.672053}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 296, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:19:51.074867+08:00", "timestamp": 1750324791.074867}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:00:19.672413", "seconds": 19.672413}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:19:51.075227+08:00", "timestamp": 1750324791.075227}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:19.672851", "seconds": 19.672851}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:19:51.075665+08:00", "timestamp": 1750324791.075665}}}
{"text": "用户主动登出\n", "record": {"elapsed": {"repr": "0:00:27.199354", "seconds": 27.199354}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_logout", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 702, "message": "用户主动登出", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:19:58.602168+08:00", "timestamp": 1750324798.602168}}}
{"text": "用户操作: Admin(0) - logout\n", "record": {"elapsed": {"repr": "0:00:27.199736", "seconds": 27.199736}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "logout"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - logout", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:19:58.602550+08:00", "timestamp": 1750324798.60255}}}
{"text": "客户端连接重置\n", "record": {"elapsed": {"repr": "0:00:27.206104", "seconds": 27.206104}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47796}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 180, "message": "客户端连接重置", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:19:58.608918+08:00", "timestamp": 1750324798.608918}}}
{"text": "网络事件: client_connection_reset\n", "record": {"elapsed": {"repr": "0:00:27.206530", "seconds": 27.20653}, "exception": null, "extra": {"network": true, "event": "client_connection_reset", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connection_reset", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:19:58.609344+08:00", "timestamp": 1750324798.609344}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:00:27.206901", "seconds": 27.206901}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47796}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 197, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:19:58.609715+08:00", "timestamp": 1750324798.609715}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:00:27.207340", "seconds": 27.20734}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:19:58.610154+08:00", "timestamp": 1750324798.610154}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:07.664953", "seconds": 67.664953}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46172}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:20:39.067767+08:00", "timestamp": 1750324839.067767}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:07.665284", "seconds": 67.665284}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 46172}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:20:39.068098+08:00", "timestamp": 1750324839.068098}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:10.762328", "seconds": 70.762328}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49856}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:20:42.165142+08:00", "timestamp": 1750324842.165142}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:10.762672", "seconds": 70.762672}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 49856}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:20:42.165486+08:00", "timestamp": 1750324842.165486}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:19.550189", "seconds": 79.550189}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:20:50.953003+08:00", "timestamp": 1750324850.953003}}}
{"text": "用户认证失败\n", "record": {"elapsed": {"repr": "0:01:19.550812", "seconds": 79.550812}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1", "error": "用户名或密码错误"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 318, "message": "用户认证失败", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:20:50.953626+08:00", "timestamp": 1750324850.953626}}}
{"text": "安全事件: login_failed\n", "record": {"elapsed": {"repr": "0:01:19.551015", "seconds": 79.551015}, "exception": null, "extra": {"security": true, "event": "login_failed", "username": "Admin", "client_ip": "127.0.0.1", "reason": "用户名或密码错误"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_failed", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:20:50.953829+08:00", "timestamp": 1750324850.953829}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:32.443857", "seconds": 92.443857}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:21:03.846671+08:00", "timestamp": 1750324863.846671}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:32.450502", "seconds": 92.450502}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 296, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:21:03.853316+08:00", "timestamp": 1750324863.853316}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:01:32.450909", "seconds": 92.450909}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:21:03.853723+08:00", "timestamp": 1750324863.853723}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:32.451202", "seconds": 92.451202}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:21:03.854016+08:00", "timestamp": 1750324863.854016}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:01:43.471174", "seconds": 103.471174}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:21:14.873988+08:00", "timestamp": 1750324874.873988}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:01:43.472788", "seconds": 103.472788}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 296, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:21:14.875602+08:00", "timestamp": 1750324874.875602}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:01:43.473185", "seconds": 103.473185}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:21:14.875999+08:00", "timestamp": 1750324874.875999}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:01:43.473595", "seconds": 103.473595}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:21:14.876409+08:00", "timestamp": 1750324874.876409}}}
{"text": "开始发送文件数据\n", "record": {"elapsed": {"repr": "0:02:31.438627", "seconds": 151.438627}, "exception": null, "extra": {"name": "server.core", "filename": "README.md", "file_size": 20011}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_file_download_request", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 964, "message": "开始发送文件数据", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:22:02.841441+08:00", "timestamp": 1750324922.841441}}}
{"text": "文件操作: send_start - README.md\n", "record": {"elapsed": {"repr": "0:02:31.439536", "seconds": 151.439536}, "exception": null, "extra": {"file": true, "operation": "send_start", "filename": "README.md", "file_size": 20011}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: send_start - README.md", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:22:02.842350+08:00", "timestamp": 1750324922.84235}}}
{"text": "物理文件已删除: server/data/files/2/56def51ebf4f457c92ba49e00589234f_README.md\n", "record": {"elapsed": {"repr": "0:03:02.840217", "seconds": 182.840217}, "exception": null, "extra": {"name": "database"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "delete_file", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 749, "message": "物理文件已删除: server/data/files/2/56def51ebf4f457c92ba49e00589234f_README.md", "module": "models", "name": "server.database.models", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:22:34.243031+08:00", "timestamp": 1750324954.243031}}}
{"text": "文件被删除\n", "record": {"elapsed": {"repr": "0:03:02.840739", "seconds": 182.840739}, "exception": null, "extra": {"name": "database", "file_id": 2, "filename": "README.md"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "delete_file", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 757, "message": "文件被删除", "module": "models", "name": "server.database.models", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:22:34.243553+08:00", "timestamp": 1750324954.243553}}}
{"text": "管理员操作成功: delete_file\n", "record": {"elapsed": {"repr": "0:03:02.843018", "seconds": 182.843018}, "exception": null, "extra": {"name": "server.utils.admin_auth", "operation": "delete_file", "operator_id": 0, "operator_name": "Admin", "target_type": "file", "target_id": 2, "target_name": "README.md", "success": true}, "file": {"name": "admin_auth.py", "path": "/home/student/Code/CN/Chat-Room/server/utils/admin_auth.py"}, "function": "log_admin_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 183, "message": "管理员操作成功: delete_file", "module": "admin_auth", "name": "server.utils.admin_auth", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:22:34.245832+08:00", "timestamp": 1750324954.245832}}}
{"text": "安全事件: admin_operation_delete_file\n", "record": {"elapsed": {"repr": "0:03:02.845722", "seconds": 182.845722}, "exception": null, "extra": {"security": true, "event": "admin_operation_delete_file", "operation": "delete_file", "operator_id": 0, "operator_name": "Admin", "target_type": "file", "target_id": 2, "target_name": "README.md", "success": true}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: admin_operation_delete_file", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:22:34.248536+08:00", "timestamp": 1750324954.248536}}}
{"text": "用户主动登出\n", "record": {"elapsed": {"repr": "0:11:02.997075", "seconds": 662.997075}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_logout", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 702, "message": "用户主动登出", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:34.399889+08:00", "timestamp": 1750325434.399889}}}
{"text": "用户操作: test0(1) - logout\n", "record": {"elapsed": {"repr": "0:11:03.026246", "seconds": 663.026246}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "logout"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - logout", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:34.429060+08:00", "timestamp": 1750325434.42906}}}
{"text": "客户端连接重置\n", "record": {"elapsed": {"repr": "0:11:03.058708", "seconds": 663.058708}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49856}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 180, "message": "客户端连接重置", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:34.461522+08:00", "timestamp": 1750325434.461522}}}
{"text": "网络事件: client_connection_reset\n", "record": {"elapsed": {"repr": "0:11:03.059383", "seconds": 663.059383}, "exception": null, "extra": {"network": true, "event": "client_connection_reset", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connection_reset", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:34.462197+08:00", "timestamp": 1750325434.462197}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:11:03.063164", "seconds": 663.063164}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49856}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 197, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:34.465978+08:00", "timestamp": 1750325434.465978}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:11:03.063651", "seconds": 663.063651}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668013893312, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:34.466465+08:00", "timestamp": 1750325434.466465}}}
{"text": "用户主动登出\n", "record": {"elapsed": {"repr": "0:11:08.237867", "seconds": 668.237867}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_logout", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 702, "message": "用户主动登出", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:39.640681+08:00", "timestamp": 1750325439.640681}}}
{"text": "用户操作: Admin(0) - logout\n", "record": {"elapsed": {"repr": "0:11:08.239445", "seconds": 668.239445}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "logout"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - logout", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:39.642259+08:00", "timestamp": 1750325439.642259}}}
{"text": "客户端连接重置\n", "record": {"elapsed": {"repr": "0:11:08.247611", "seconds": 668.247611}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46172}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 180, "message": "客户端连接重置", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:39.650425+08:00", "timestamp": 1750325439.650425}}}
{"text": "网络事件: client_connection_reset\n", "record": {"elapsed": {"repr": "0:11:08.248201", "seconds": 668.248201}, "exception": null, "extra": {"network": true, "event": "client_connection_reset", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connection_reset", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:39.651015+08:00", "timestamp": 1750325439.651015}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:11:08.248698", "seconds": 668.248698}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 46172}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 197, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:39.651512+08:00", "timestamp": 1750325439.651512}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:11:08.248974", "seconds": 668.248974}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668022286016, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-19 17:30:39.651788+08:00", "timestamp": 1750325439.651788}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:12:58.971536", "seconds": 778.971536}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:32:30.374350+08:00", "timestamp": 1750325550.37435}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:12:58.976697", "seconds": 778.976697}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 9716, "name": "MainProcess"}, "thread": {"id": 140668452546368, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:32:30.379511+08:00", "timestamp": 1750325550.379511}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.432311", "seconds": 0.432311}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 13068, "name": "MainProcess"}, "thread": {"id": 140583278552896, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:35:51.777540+08:00", "timestamp": 1750325751.77754}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.432661", "seconds": 0.432661}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "__main__", "process": {"id": 13068, "name": "MainProcess"}, "thread": {"id": 140583278552896, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:35:51.777890+08:00", "timestamp": 1750325751.77789}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.434964", "seconds": 0.434964}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 13068, "name": "MainProcess"}, "thread": {"id": 140583278552896, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:35:51.780193+08:00", "timestamp": 1750325751.780193}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.161447", "seconds": 1.161447}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 13068, "name": "MainProcess"}, "thread": {"id": 140583278552896, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:35:52.506676+08:00", "timestamp": 1750325752.506676}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.161870", "seconds": 1.16187}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 13068, "name": "MainProcess"}, "thread": {"id": 140583278552896, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:35:52.507099+08:00", "timestamp": 1750325752.507099}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.162464", "seconds": 1.162464}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 13068, "name": "MainProcess"}, "thread": {"id": 140583278552896, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:35:52.507693+08:00", "timestamp": 1750325752.507693}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.163089", "seconds": 1.163089}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 13068, "name": "MainProcess"}, "thread": {"id": 140583278552896, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:35:52.508318+08:00", "timestamp": 1750325752.508318}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.163280", "seconds": 1.16328}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 13068, "name": "MainProcess"}, "thread": {"id": 140583278552896, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:35:52.508509+08:00", "timestamp": 1750325752.508509}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.166861", "seconds": 1.166861}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 109, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 13068, "name": "MainProcess"}, "thread": {"id": 140583278552896, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:35:52.512090+08:00", "timestamp": 1750325752.51209}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.167085", "seconds": 1.167085}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 13068, "name": "MainProcess"}, "thread": {"id": 140583278552896, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:35:52.512314+08:00", "timestamp": 1750325752.512314}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.228246", "seconds": 0.228246}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:30.424657+08:00", "timestamp": 1750325790.424657}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.228709", "seconds": 0.228709}, "exception": null, "extra": {"name": "server.main", "host": "localhost", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "__main__", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:30.425120+08:00", "timestamp": 1750325790.42512}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.229626", "seconds": 0.229626}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:30.426037+08:00", "timestamp": 1750325790.426037}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.782843", "seconds": 0.782843}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:30.979254+08:00", "timestamp": 1750325790.979254}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:00.783346", "seconds": 0.783346}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:30.979757+08:00", "timestamp": 1750325790.979757}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:00.783977", "seconds": 0.783977}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:30.980388+08:00", "timestamp": 1750325790.980388}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:00.784658", "seconds": 0.784658}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:30.981069+08:00", "timestamp": 1750325790.981069}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:00.784868", "seconds": 0.784868}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:30.981279+08:00", "timestamp": 1750325790.981279}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:00.787647", "seconds": 0.787647}, "exception": null, "extra": {"name": "server.core", "host": "localhost", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 109, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:30.984058+08:00", "timestamp": 1750325790.984058}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:00.787872", "seconds": 0.787872}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "localhost", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:30.984283+08:00", "timestamp": 1750325790.984283}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:20.556919", "seconds": 20.556919}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49394}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:50.753330+08:00", "timestamp": 1750325810.75333}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:20.557326", "seconds": 20.557326}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 49394}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:36:50.753737+08:00", "timestamp": 1750325810.753737}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:59.868587", "seconds": 59.868587}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:30.064998+08:00", "timestamp": 1750325850.064998}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:59.874597", "seconds": 59.874597}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 296, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:30.071008+08:00", "timestamp": 1750325850.071008}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:00:59.874967", "seconds": 59.874967}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:30.071378+08:00", "timestamp": 1750325850.071378}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:59.875210", "seconds": 59.87521}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:30.071621+08:00", "timestamp": 1750325850.071621}}}
{"text": "收到文件上传请求\n", "record": {"elapsed": {"repr": "0:01:12.477015", "seconds": 72.477015}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "filename": "test_upload.txt", "file_size": 208, "chat_group_id": 2}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_file_upload_request", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 801, "message": "收到文件上传请求", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:42.673426+08:00", "timestamp": 1750325862.673426}}}
{"text": "文件操作: upload_request_start - test_upload.txt\n", "record": {"elapsed": {"repr": "0:01:12.477272", "seconds": 72.477272}, "exception": null, "extra": {"file": true, "operation": "upload_request_start", "filename": "test_upload.txt", "user_id": 1, "username": "test0", "file_size": 208}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: upload_request_start - test_upload.txt", "module": "logger", "name": "shared.logger", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:42.673683+08:00", "timestamp": 1750325862.673683}}}
{"text": "开始接收文件数据\n", "record": {"elapsed": {"repr": "0:01:12.477907", "seconds": 72.477907}, "exception": null, "extra": {"name": "server.core", "filename": "test_upload.txt", "server_filepath": "server/data/files/2/d5db94c357c941b18332e21df3a5a2cb_test_upload.txt"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_file_upload_request", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 860, "message": "开始接收文件数据", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:42.674318+08:00", "timestamp": 1750325862.674318}}}
{"text": "文件操作: upload_data_start - test_upload.txt\n", "record": {"elapsed": {"repr": "0:01:12.478122", "seconds": 72.478122}, "exception": null, "extra": {"file": true, "operation": "upload_data_start", "filename": "test_upload.txt", "server_filepath": "server/data/files/2/d5db94c357c941b18332e21df3a5a2cb_test_upload.txt"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: upload_data_start - test_upload.txt", "module": "logger", "name": "shared.logger", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:42.674533+08:00", "timestamp": 1750325862.674533}}}
{"text": "文件数据接收完成\n", "record": {"elapsed": {"repr": "0:01:12.577091", "seconds": 72.577091}, "exception": null, "extra": {"name": "server.core", "filename": "test_upload.txt", "file_size": 208, "transfer_time": "0.10s", "transfer_speed": "2.06KB/s"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "_receive_file_data", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 921, "message": "文件数据接收完成", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:42.773502+08:00", "timestamp": 1750325862.773502}}}
{"text": "文件操作: upload_data_complete - test_upload.txt\n", "record": {"elapsed": {"repr": "0:01:12.577399", "seconds": 72.577399}, "exception": null, "extra": {"file": true, "operation": "upload_data_complete", "filename": "test_upload.txt", "file_size": 208, "transfer_time": 0.0987250804901123}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: upload_data_complete - test_upload.txt", "module": "logger", "name": "shared.logger", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:42.773810+08:00", "timestamp": 1750325862.77381}}}
{"text": "文件上传完全成功\n", "record": {"elapsed": {"repr": "0:01:12.585416", "seconds": 72.585416}, "exception": null, "extra": {"name": "server.core", "filename": "test_upload.txt", "file_id": 4, "uploader_id": 1, "uploader_username": "test0", "chat_group_id": 2}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "_receive_file_data", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 960, "message": "文件上传完全成功", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:42.781827+08:00", "timestamp": 1750325862.781827}}}
{"text": "文件操作: upload_complete - test_upload.txt\n", "record": {"elapsed": {"repr": "0:01:12.585722", "seconds": 72.585722}, "exception": null, "extra": {"file": true, "operation": "upload_complete", "filename": "test_upload.txt", "file_id": 4, "uploader_id": 1, "uploader_username": "test0"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: upload_complete - test_upload.txt", "module": "logger", "name": "shared.logger", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:37:42.782133+08:00", "timestamp": 1750325862.782133}}}
{"text": "用户操作: test0(1) - disconnect\n", "record": {"elapsed": {"repr": "0:02:36.962342", "seconds": 156.962342}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:39:07.158753+08:00", "timestamp": 1750325947.158753}}}
{"text": "用户断开连接\n", "record": {"elapsed": {"repr": "0:02:36.962791", "seconds": 156.962791}, "exception": null, "extra": {"name": "server.core.user_manager", "user_id": 1, "username": "test0"}, "file": {"name": "user_manager.py", "path": "/home/student/Code/CN/Chat-Room/server/core/user_manager.py"}, "function": "disconnect_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 127, "message": "用户断开连接", "module": "user_manager", "name": "server.core.user_manager", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:39:07.159202+08:00", "timestamp": 1750325947.159202}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:02:36.967302", "seconds": 156.967302}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 49394}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 197, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:39:07.163713+08:00", "timestamp": 1750325947.163713}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:02:36.967515", "seconds": 156.967515}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140366829311680, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-19 17:39:07.163926+08:00", "timestamp": 1750325947.163926}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:03:06.474993", "seconds": 186.474993}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:39:36.671404+08:00", "timestamp": 1750325976.671404}}}
{"text": "服务器已停止\n", "record": {"elapsed": {"repr": "0:03:06.475509", "seconds": 186.475509}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "stop", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 146, "message": "服务器已停止", "module": "server", "name": "server.core.server", "process": {"id": 13349, "name": "MainProcess"}, "thread": {"id": 140367130318656, "name": "MainThread"}, "time": {"repr": "2025-06-19 17:39:36.671920+08:00", "timestamp": 1750325976.67192}}}
{"text": "日志系统初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.708753", "seconds": 0.708753}, "exception": null, "extra": {"component": "server"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "initialize", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "日志系统初始化完成", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:22.287244+08:00", "timestamp": 1750404742.287244}}}
{"text": "服务器启动中...\n", "record": {"elapsed": {"repr": "0:00:00.709572", "seconds": 0.709572}, "exception": null, "extra": {"name": "server.main", "host": "0.0.0.0", "port": 8888, "debug": false}, "file": {"name": "main.py", "path": "/home/student/Code/CN/Chat-Room/server/main.py"}, "function": "main", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 62, "message": "服务器启动中...", "module": "main", "name": "server.main", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:22.288063+08:00", "timestamp": 1750404742.288063}}}
{"text": "数据库管理器初始化完成\n", "record": {"elapsed": {"repr": "0:00:00.723977", "seconds": 0.723977}, "exception": null, "extra": {"name": "database", "db_path": "server/data/chatroom.db"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 27, "message": "数据库管理器初始化完成", "module": "models", "name": "server.database.models", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:22.302468+08:00", "timestamp": 1750404742.302468}}}
{"text": "服务器初始化完成\n", "record": {"elapsed": {"repr": "0:00:01.768146", "seconds": 1.768146}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "__init__", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 85, "message": "服务器初始化完成", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:23.346637+08:00", "timestamp": 1750404743.346637}}}
{"text": "初始化数据库...\n", "record": {"elapsed": {"repr": "0:00:01.769226", "seconds": 1.769226}, "exception": null, "extra": {"name": "server.core"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 91, "message": "初始化数据库...", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:23.347717+08:00", "timestamp": 1750404743.347717}}}
{"text": "开始运行所有数据库迁移\n", "record": {"elapsed": {"repr": "0:00:01.771270", "seconds": 1.77127}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 137, "message": "开始运行所有数据库迁移", "module": "migration", "name": "server.database.migration", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:23.349761+08:00", "timestamp": 1750404743.349761}}}
{"text": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}\n", "record": {"elapsed": {"repr": "0:00:01.773014", "seconds": 1.773014}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 141, "message": "当前迁移状态: {'users_has_is_banned': True, 'chat_groups_has_is_banned': True, 'admin_user_exists': True}", "module": "migration", "name": "server.database.migration", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:23.351505+08:00", "timestamp": 1750404743.351505}}}
{"text": "所有迁移已完成，无需重复执行\n", "record": {"elapsed": {"repr": "0:00:01.773759", "seconds": 1.773759}, "exception": null, "extra": {"name": "server.database.migration"}, "file": {"name": "migration.py", "path": "/home/student/Code/CN/Chat-Room/server/database/migration.py"}, "function": "run_all_migrations", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 147, "message": "所有迁移已完成，无需重复执行", "module": "migration", "name": "server.database.migration", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:23.352250+08:00", "timestamp": 1750404743.35225}}}
{"text": "服务器启动成功\n", "record": {"elapsed": {"repr": "0:00:01.792045", "seconds": 1.792045}, "exception": null, "extra": {"name": "server.core", "host": "0.0.0.0", "port": 8888, "max_connections": 100}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 109, "message": "服务器启动成功", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:23.370536+08:00", "timestamp": 1750404743.370536}}}
{"text": "网络事件: server_started\n", "record": {"elapsed": {"repr": "0:00:01.792731", "seconds": 1.792731}, "exception": null, "extra": {"network": true, "event": "server_started", "client_ip": null, "host": "0.0.0.0", "port": 8888}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: server_started", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:23.371222+08:00", "timestamp": 1750404743.371222}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:00:20.968457", "seconds": 20.968457}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 45241}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:42.546948+08:00", "timestamp": 1750404762.546948}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:00:20.969176", "seconds": 20.969176}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 45241}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:32:42.547667+08:00", "timestamp": 1750404762.547667}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:00:46.059263", "seconds": 46.059263}, "exception": null, "extra": {"name": "server.core", "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998099707584, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-20 15:33:07.637754+08:00", "timestamp": 1750404787.637754}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:00:46.069373", "seconds": 46.069373}, "exception": null, "extra": {"name": "server.core", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 296, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998099707584, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-20 15:33:07.647864+08:00", "timestamp": 1750404787.647864}}}
{"text": "用户操作: Admin(0) - login\n", "record": {"elapsed": {"repr": "0:00:46.070048", "seconds": 46.070048}, "exception": null, "extra": {"user_id": 0, "username": "Admin", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: Admin(0) - login", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998099707584, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-20 15:33:07.648539+08:00", "timestamp": 1750404787.648539}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:00:46.070542", "seconds": 46.070542}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 0, "username": "Admin", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998099707584, "name": "Thread-2 (handle_client)"}, "time": {"repr": "2025-06-20 15:33:07.649033+08:00", "timestamp": 1750404787.649033}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:01:09.925651", "seconds": 69.925651}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48393}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:33:31.504142+08:00", "timestamp": 1750404811.504142}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:01:09.926322", "seconds": 69.926322}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 48393}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:33:31.504813+08:00", "timestamp": 1750404811.504813}}}
{"text": "创建新用户\n", "record": {"elapsed": {"repr": "0:02:24.557409", "seconds": 144.557409}, "exception": null, "extra": {"name": "database", "user_id": 3, "username": "test5"}, "file": {"name": "models.py", "path": "/home/student/Code/CN/Chat-Room/server/database/models.py"}, "function": "create_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 231, "message": "创建新用户", "module": "models", "name": "server.database.models", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-20 15:34:46.135900+08:00", "timestamp": 1750404886.1359}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:02:37.679108", "seconds": 157.679108}, "exception": null, "extra": {"name": "server.core", "username": "test5", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-20 15:34:59.257599+08:00", "timestamp": 1750404899.257599}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:02:37.689144", "seconds": 157.689144}, "exception": null, "extra": {"name": "server.core", "user_id": 3, "username": "test5", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 296, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-20 15:34:59.267635+08:00", "timestamp": 1750404899.267635}}}
{"text": "用户操作: test5(3) - login\n", "record": {"elapsed": {"repr": "0:02:37.689582", "seconds": 157.689582}, "exception": null, "extra": {"user_id": 3, "username": "test5", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test5(3) - login", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-20 15:34:59.268073+08:00", "timestamp": 1750404899.268073}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:02:37.689927", "seconds": 157.689927}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 3, "username": "test5", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-20 15:34:59.268418+08:00", "timestamp": 1750404899.268418}}}
{"text": "用户操作: test5(3) - disconnect\n", "record": {"elapsed": {"repr": "0:03:59.213011", "seconds": 239.213011}, "exception": null, "extra": {"user_id": 3, "username": "test5", "action": "disconnect"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test5(3) - disconnect", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-20 15:36:20.791502+08:00", "timestamp": 1750404980.791502}}}
{"text": "用户断开连接\n", "record": {"elapsed": {"repr": "0:03:59.213572", "seconds": 239.213572}, "exception": null, "extra": {"name": "server.core.user_manager", "user_id": 3, "username": "test5"}, "file": {"name": "user_manager.py", "path": "/home/student/Code/CN/Chat-Room/server/core/user_manager.py"}, "function": "disconnect_user", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 127, "message": "用户断开连接", "module": "user_manager", "name": "server.core.user_manager", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-20 15:36:20.792063+08:00", "timestamp": 1750404980.792063}}}
{"text": "客户端连接已关闭\n", "record": {"elapsed": {"repr": "0:03:59.218379", "seconds": 239.218379}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 48393}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_client", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 197, "message": "客户端连接已关闭", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-20 15:36:20.796870+08:00", "timestamp": 1750404980.79687}}}
{"text": "网络事件: client_disconnected\n", "record": {"elapsed": {"repr": "0:03:59.218914", "seconds": 239.218914}, "exception": null, "extra": {"network": true, "event": "client_disconnected", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_disconnected", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-3 (handle_client)"}, "time": {"repr": "2025-06-20 15:36:20.797405+08:00", "timestamp": 1750404980.797405}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:04:20.184034", "seconds": 260.184034}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 45989}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:36:41.762525+08:00", "timestamp": 1750405001.762525}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:04:20.184525", "seconds": 260.184525}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 45989}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:36:41.763016+08:00", "timestamp": 1750405001.763016}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:04:28.904689", "seconds": 268.904689}, "exception": null, "extra": {"name": "server.core", "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:36:50.483180+08:00", "timestamp": 1750405010.48318}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:04:28.917505", "seconds": 268.917505}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 296, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:36:50.495996+08:00", "timestamp": 1750405010.495996}}}
{"text": "用户操作: test0(1) - login\n", "record": {"elapsed": {"repr": "0:04:28.917944", "seconds": 268.917944}, "exception": null, "extra": {"user_id": 1, "username": "test0", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test0(1) - login", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:36:50.496435+08:00", "timestamp": 1750405010.496435}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:04:28.918453", "seconds": 268.918453}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 1, "username": "test0", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:36:50.496944+08:00", "timestamp": 1750405010.496944}}}
{"text": "新客户端连接\n", "record": {"elapsed": {"repr": "0:04:39.795020", "seconds": 279.79502}, "exception": null, "extra": {"name": "server.core", "client_ip": "127.0.0.1", "client_port": 47113}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "start", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 119, "message": "新客户端连接", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:37:01.373511+08:00", "timestamp": 1750405021.373511}}}
{"text": "网络事件: client_connected\n", "record": {"elapsed": {"repr": "0:04:39.795619", "seconds": 279.795619}, "exception": null, "extra": {"network": true, "event": "client_connected", "client_ip": "127.0.0.1", "client_port": 47113}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_network_event", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 279, "message": "网络事件: client_connected", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998193055552, "name": "MainThread"}, "time": {"repr": "2025-06-20 15:37:01.374110+08:00", "timestamp": 1750405021.37411}}}
{"text": "用户认证中\n", "record": {"elapsed": {"repr": "0:04:45.817207", "seconds": 285.817207}, "exception": null, "extra": {"name": "server.core", "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 271, "message": "用户认证中", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:37:07.395698+08:00", "timestamp": 1750405027.395698}}}
{"text": "用户登录成功\n", "record": {"elapsed": {"repr": "0:04:45.818904", "seconds": 285.818904}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_login", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 296, "message": "用户登录成功", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:37:07.397395+08:00", "timestamp": 1750405027.397395}}}
{"text": "用户操作: test1(2) - login\n", "record": {"elapsed": {"repr": "0:04:45.819302", "seconds": 285.819302}, "exception": null, "extra": {"user_id": 2, "username": "test1", "action": "login", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_user_action", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 268, "message": "用户操作: test1(2) - login", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:37:07.397793+08:00", "timestamp": 1750405027.397793}}}
{"text": "安全事件: login_success\n", "record": {"elapsed": {"repr": "0:04:45.819649", "seconds": 285.819649}, "exception": null, "extra": {"security": true, "event": "login_success", "user_id": 2, "username": "test1", "client_ip": "127.0.0.1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_security_event", "level": {"icon": "⚠️", "name": "WARNING", "no": 30}, "line": 247, "message": "安全事件: login_success", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:37:07.398140+08:00", "timestamp": 1750405027.39814}}}
{"text": "收到文件上传请求\n", "record": {"elapsed": {"repr": "0:08:18.269186", "seconds": 498.269186}, "exception": null, "extra": {"name": "server.core", "user_id": 1, "username": "test0", "filename": "requirements.txt", "file_size": 496, "chat_group_id": 3}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_file_upload_request", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 801, "message": "收到文件上传请求", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:40:39.847677+08:00", "timestamp": 1750405239.847677}}}
{"text": "文件操作: upload_request_start - requirements.txt\n", "record": {"elapsed": {"repr": "0:08:18.269872", "seconds": 498.269872}, "exception": null, "extra": {"file": true, "operation": "upload_request_start", "filename": "requirements.txt", "user_id": 1, "username": "test0", "file_size": 496}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: upload_request_start - requirements.txt", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:40:39.848363+08:00", "timestamp": 1750405239.848363}}}
{"text": "开始接收文件数据\n", "record": {"elapsed": {"repr": "0:08:18.274825", "seconds": 498.274825}, "exception": null, "extra": {"name": "server.core", "filename": "requirements.txt", "server_filepath": "server/data/files/3/aaa139dd370c49d789b805d67f95b853_requirements.txt"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_file_upload_request", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 860, "message": "开始接收文件数据", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:40:39.853316+08:00", "timestamp": 1750405239.853316}}}
{"text": "文件操作: upload_data_start - requirements.txt\n", "record": {"elapsed": {"repr": "0:08:18.275341", "seconds": 498.275341}, "exception": null, "extra": {"file": true, "operation": "upload_data_start", "filename": "requirements.txt", "server_filepath": "server/data/files/3/aaa139dd370c49d789b805d67f95b853_requirements.txt"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: upload_data_start - requirements.txt", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:40:39.853832+08:00", "timestamp": 1750405239.853832}}}
{"text": "文件数据接收完成\n", "record": {"elapsed": {"repr": "0:08:18.370815", "seconds": 498.370815}, "exception": null, "extra": {"name": "server.core", "filename": "requirements.txt", "file_size": 496, "transfer_time": "0.09s", "transfer_speed": "5.12KB/s"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "_receive_file_data", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 921, "message": "文件数据接收完成", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:40:39.949306+08:00", "timestamp": 1750405239.949306}}}
{"text": "文件操作: upload_data_complete - requirements.txt\n", "record": {"elapsed": {"repr": "0:08:18.371929", "seconds": 498.371929}, "exception": null, "extra": {"file": true, "operation": "upload_data_complete", "filename": "requirements.txt", "file_size": 496, "transfer_time": 0.09457516670227051}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: upload_data_complete - requirements.txt", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:40:39.950420+08:00", "timestamp": 1750405239.95042}}}
{"text": "文件上传完全成功\n", "record": {"elapsed": {"repr": "0:08:18.400059", "seconds": 498.400059}, "exception": null, "extra": {"name": "server.core", "filename": "requirements.txt", "file_id": 5, "uploader_id": 1, "uploader_username": "test0", "chat_group_id": 3}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "_receive_file_data", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 960, "message": "文件上传完全成功", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:40:39.978550+08:00", "timestamp": 1750405239.97855}}}
{"text": "文件操作: upload_complete - requirements.txt\n", "record": {"elapsed": {"repr": "0:08:18.400748", "seconds": 498.400748}, "exception": null, "extra": {"file": true, "operation": "upload_complete", "filename": "requirements.txt", "file_id": 5, "uploader_id": 1, "uploader_username": "test0"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: upload_complete - requirements.txt", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139998091314880, "name": "Thread-4 (handle_client)"}, "time": {"repr": "2025-06-20 15:40:39.979239+08:00", "timestamp": 1750405239.979239}}}
{"text": "收到文件下载请求\n", "record": {"elapsed": {"repr": "0:08:55.357844", "seconds": 535.357844}, "exception": null, "extra": {"name": "server.core", "user_id": 2, "username": "test1", "file_id": "5"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_file_download_request", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 1006, "message": "收到文件下载请求", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:41:16.936335+08:00", "timestamp": 1750405276.936335}}}
{"text": "文件操作: download_request_start - file_id_5\n", "record": {"elapsed": {"repr": "0:08:55.358357", "seconds": 535.358357}, "exception": null, "extra": {"file": true, "operation": "download_request_start", "filename": "file_id_5", "user_id": 2, "username": "test1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: download_request_start - file_id_5", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:41:16.936848+08:00", "timestamp": 1750405276.936848}}}
{"text": "开始发送文件数据\n", "record": {"elapsed": {"repr": "0:08:55.359660", "seconds": 535.35966}, "exception": null, "extra": {"name": "server.core", "filename": "requirements.txt", "file_size": 496, "user_id": 2, "username": "test1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "handle_file_download_request", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 1057, "message": "开始发送文件数据", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:41:16.938151+08:00", "timestamp": 1750405276.938151}}}
{"text": "文件操作: download_data_start - requirements.txt\n", "record": {"elapsed": {"repr": "0:08:55.360080", "seconds": 535.36008}, "exception": null, "extra": {"file": true, "operation": "download_data_start", "filename": "requirements.txt", "file_size": 496, "user_id": 2, "username": "test1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: download_data_start - requirements.txt", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:41:16.938571+08:00", "timestamp": 1750405276.938571}}}
{"text": "文件数据发送完成\n", "record": {"elapsed": {"repr": "0:08:57.461686", "seconds": 537.461686}, "exception": null, "extra": {"name": "server.core", "filename": "requirements.txt", "file_size": 496, "sent_size": 496, "transfer_time": "2.00s", "transfer_speed": "0.24KB/s", "user_id": 2, "username": "test1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "_send_file_data", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 1130, "message": "文件数据发送完成", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:41:19.040177+08:00", "timestamp": 1750405279.040177}}}
{"text": "文件操作: download_data_complete - requirements.txt\n", "record": {"elapsed": {"repr": "0:08:57.462535", "seconds": 537.462535}, "exception": null, "extra": {"file": true, "operation": "download_data_complete", "filename": "requirements.txt", "file_size": 496, "transfer_time": 2.000852108001709, "user_id": 2, "username": "test1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: download_data_complete - requirements.txt", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:41:19.041026+08:00", "timestamp": 1750405279.041026}}}
{"text": "文件下载完全成功\n", "record": {"elapsed": {"repr": "0:08:57.463666", "seconds": 537.463666}, "exception": null, "extra": {"name": "server.core", "filename": "requirements.txt", "user_id": 2, "username": "test1"}, "file": {"name": "server.py", "path": "/home/student/Code/CN/Chat-Room/server/core/server.py"}, "function": "_send_file_data", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 1152, "message": "文件下载完全成功", "module": "server", "name": "server.core.server", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:41:19.042157+08:00", "timestamp": 1750405279.042157}}}
{"text": "文件操作: download_complete - requirements.txt\n", "record": {"elapsed": {"repr": "0:08:57.464318", "seconds": 537.464318}, "exception": null, "extra": {"file": true, "operation": "download_complete", "filename": "requirements.txt", "user_id": 2, "username": "test1"}, "file": {"name": "logger.py", "path": "/home/student/Code/CN/Chat-Room/shared/logger.py"}, "function": "log_file_operation", "level": {"icon": "ℹ️", "name": "INFO", "no": 20}, "line": 290, "message": "文件操作: download_complete - requirements.txt", "module": "logger", "name": "shared.logger", "process": {"id": 2468, "name": "MainProcess"}, "thread": {"id": 139997613127360, "name": "Thread-5 (handle_client)"}, "time": {"repr": "2025-06-20 15:41:19.042809+08:00", "timestamp": 1750405279.042809}}}
