feat: 日志模块 + netRequest 封装 + PROJECT.md 更新
日志模块(文件持久化 + 事件总线联动 + 脱敏)
新增:
- shared/types/logging.ts — LogLevel / LogCategory / LogEntry 类型
- electron/main/logger.ts — 主进程日志核心(JSON Lines / 每日轮转 / 7天清理)
- electron/main/log-ipc.ts — 渲染进程日志 IPC 通道接收
- src/utils/logger.ts — 渲染进程日志器(IPC 转发 / DEV 控制台 / 事件总线钩子)
- shared/utils/sanitize.ts — 脱敏工具(ID哈希 / 邮箱 / 手机 / 名称 / Token)
修改:
- electron/main.ts — initLogger + flushLogger + uncaughtException
- src/main.tsx — renderer 全局错误捕获
- src/utils/event-bus.ts — setEventLogListener 钩子,emit 自动审计
- src/services/request.ts — 拦截器结构化错误分级记录
- electron/main/updater.ts — 14处 console → logger 迁移
- src/components/AppProvider.tsx — 登录/登出/自动登录 auth 事件日志
- shared/constants/ipc-channels.ts — 新增 LOG_MESSAGE 通道
netRequest 封装(Electron net.request 的 axios 风格 API)
新增:
- electron/main/net-request.ts — netRequest.get/post/put/del 命名空间
修改:
- electron/main/updater.ts — fetchUpdateInfo 改用 netRequest(22→12行)
文档更新
- PROJECT.md — 目录结构 / 状态管理 / 日志系统 / IPC 章节同步现状
- TODO.md — 增量更新改造 + 日志模块待办
- UpdateA.md — API blockmap 字段 / 数据库字段说明
This commit is contained in:
51
shared/types/logging.ts
Normal file
51
shared/types/logging.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
// ============================================================
|
||||
// 日志模块 — 共享类型定义(主进程 + 渲染进程双端使用)
|
||||
// ============================================================
|
||||
|
||||
/** 日志级别 */
|
||||
export type LogLevel = 'DEBUG' | 'INFO' | 'WARN' | 'ERROR';
|
||||
|
||||
/** 日志分类 */
|
||||
export type LogCategory =
|
||||
| 'request' // HTTP 请求相关
|
||||
| 'auth' // 登录 / Token / 权限
|
||||
| 'updater' // 自动更新
|
||||
| 'event' // 事件总线
|
||||
| 'app' // 应用生命周期
|
||||
| 'ui' // UI 层错误 / 警告
|
||||
| 'ipc'; // IPC 通信
|
||||
|
||||
/**
|
||||
* 结构化错误快照
|
||||
* Error 对象不可 JSON 序列化,提取关键字段保存
|
||||
*/
|
||||
export interface LogErrorSnapshot {
|
||||
/** 错误名称(Error.name 或 constructor name) */
|
||||
name: string;
|
||||
/** 错误消息 */
|
||||
message: string;
|
||||
/** 堆栈信息(可选,按需记录以节省空间) */
|
||||
stack?: string;
|
||||
/** 原始错误链(cause)的消息摘要 */
|
||||
cause?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 单条日志条目(JSON Lines 中的一行)
|
||||
*/
|
||||
export interface LogEntry {
|
||||
/** ISO 8601 时间戳(例如 "2026-06-04T10:30:00.123Z") */
|
||||
timestamp: string;
|
||||
/** 日志级别 */
|
||||
level: LogLevel;
|
||||
/** 日志分类 */
|
||||
category: LogCategory;
|
||||
/** 日志消息(简短描述) */
|
||||
message: string;
|
||||
/** 日志来源进程 */
|
||||
processType: 'main' | 'renderer';
|
||||
/** 附加上下文(需 JSON 可序列化) */
|
||||
context?: Record<string, unknown>;
|
||||
/** 错误快照(仅在 warn / error 级别时填充) */
|
||||
error?: LogErrorSnapshot;
|
||||
}
|
||||
Reference in New Issue
Block a user