Files
dashboard/.qoder/repowiki/knowledge/zh/后端日志系统(Winston 单文件输出)/后端日志系统(Winston 单文件输出).md
T
eafonyang f48f1cce70 docs(tabs): 更新标签页视图组件设计与交互细节
- 采用固定内边距策略,解决标签页悬停时的布局抖动问题
- 统一关闭按钮尺寸为14x14px,提升视觉一致性
- 优化活动标签和悬停状态的层级管理,确保视觉层次正确
- 增强视觉反馈,添加内嵌阴影效果改善用户体验
- 添加平滑颜色过渡动画(0.2秒),提升交互流畅度
- 支持玻璃拟态设计系统,实现现代化视觉风格
- 完善工具箱图标支持,确保标签页工具功能准确显示
2026-07-15 09:58:56 +08:00

2.4 KiB
Raw Blame History

kind, name, category, scope, source_files
kind name category scope source_files
logging_system 后端日志系统(Winston 单文件输出) logging_system
**
backend/src/config/logger.js
backend/src/app.js
backend/src/routes/auth.js
backend/src/config/database.js
backend/package.json

1. 使用的系统与框架

  • 后端采用 Winston v3 作为统一日志框架,通过 backend/src/config/logger.js 集中创建并导出实例。
  • 前端未引入独立日志库,调试依赖浏览器控制台,无结构化前端日志方案。

2. 核心文件与位置

  • 日志配置与实例:backend/src/config/logger.js
  • 应用入口挂载:backend/src/app.jsrequire('./config/logger') 后在启动/错误路径调用)
  • 各路由模块按需 require('../config/logger') 使用(如 routes/auth.jsroutes/blacklist.js 等)
  • 数据库 SQL 日志由 Sequelize 单独控制:backend/src/config/database.jslogging: isDevelopment ? console.log : false
  • 日志持久化目录:backend/logs/app.log(由 Dockerfile 中的 /app/logs 映射到宿主机)

3. 架构与约定

  • 单例模式:全局唯一 logger 实例,所有模块共享同一配置,避免重复初始化。
  • 输出目标:同时写入 Console 与本地文件 logs/app.log,编码 UTF-8;未启用按天/大小轮转。
  • 日志级别:默认 info,业务代码中使用 logger.info / warn / error 三种级别,未见 debug 使用。
  • 格式规范:时间戳 YYYY-MM-DD HH:mm:ss + 级别 + 消息体;额外字段以 JSON 字符串拼接在末尾(...meta 展开为 JSON.stringify(meta)),非结构化 JSON 行。
  • 环境变量:日志级别未暴露为环境变量,硬编码为 'info'
  • Sequelize SQL 日志:开发环境通过 console.log 输出,生产关闭,不进入 Winston。

4. 开发者应遵循的规则

  • 统一从 ../config/logger 导入并使用,禁止直接 console.log 输出业务日志。
  • 关键事件使用对应级别:成功/常规信息用 info,可恢复异常或降级用 warn,不可恢复错误用 error
  • 如需附加上下文,通过第三个参数对象传入(会被序列化为 JSON 拼接到消息后),例如 logger.info('msg', { userId })
  • 不要在日志中记录敏感信息(密码、token、完整请求体等)。
  • 当前未实现日志轮转,生产部署时应配合外部 logrotate 或容器日志收集策略。