name: logging-system description: 'description: 日志系统完整指南,包括应用日志、脚本日志、错误监控上报、请求日志等'
--- name: logging-system description: 日志系统完整指南,包括应用日志、脚本日志、错误监控上报、请求日志等
日志系统
何时使用
当你需要:
- 记录应用日志
- 监控和上报错误
- 查看请求日志
- 调试问题
- 分析用户行为
项目日志架构
1. 脚本日志(@build-utils/logger)
用途:构建脚本、部署脚本的日志输出 位置:packages/@build-utils/logger/
使用: import { logger } from '@build-utils/logger'
logger.info('构建开始') logger.warn('警告信息') logger.error('错误信息') logger.success('操作成功')
特点:
- 带时间戳
- 彩色输出
- 支持子logger
2. 应用日志(shared-core/logger)
用途:前端应用的日志记录 位置:packages/shared-core/src/logger/
使用: import { logger } from '@btc/shared-core'
logger.info('用户登录', { username: 'admin' }) logger.warn('Token即将过期') logger.error('API调用失败', error)
日志级别:
- debug:调试信息(开发环境)
- info:一般信息
- warn:警告
- error:错误
3. 错误监控系统
用途:捕获、上报、分析前端错误 位置:packages/shared-core/src/utils/error-monitor/
功能: ✅ 自动捕获 JS 错误 ✅ 捕获 Promise 未处理的 rejection ✅ 捕获 Vue 组件错误 ✅ 存储到 localStorage ✅ 导出错误报告
使用: import { captureError, getErrorList } from '@btc/shared-core'
// 手动上报错误 captureError(new Error('自定义错误'), { type: 'business', context: { userId: 123 } })
// 获取错误列表 const errors = getErrorList()
4. 请求日志(request-logger)
用途:记录所有 HTTP 请求 位置:apps/{app}/src/utils/request-logger.ts
功能: ✅ 记录请求 URL、方法、参数 ✅ 记录响应状态、耗时 ✅ 自动过滤敏感信息 ✅ 支持查询和导出
使用(自动集成): HTTP 拦截器自动记录所有请求 无需手动调用
查看日志: import { getRequestLogs } from '@/utils/request-logger' const logs = getRequestLogs()
错误监控使用
自动错误捕获
在应用入口(main.ts)中已自动启用: import { initErrorMonitor } from '@btc/shared-core'
initErrorMonitor({ appName: 'admin-app', version: '1.0.0', onError: (error) => { // 可选:上报到服务器 console.error('Error captured:', error) } })
手动上报
业务错误: try { await saveData(data) } catch (error) { captureError(error, { type: 'business', context: { operation: 'save', data } }) BtcMessage.error('保存失败') }
网络错误: fetch('/api/data') .catch(error => { captureError(error, { type: 'network' }) })
组件错误: onErrorCaptured((error, instance, info) => { captureError(error, { type: 'component', context: { component: instance?.$.type.name, info } }) })
错误查看和导出
查看错误列表: 访问:operations-app 的错误监控页面 路径:/operations/error-monitor
导出错误: 使用 BtcErrorMonitorExport 组件 支持按日期、来源、类型筛选导出
日志级别配置
开发环境
// vite.config.ts define: { LOG_LEVEL: JSON.stringify('debug') }
所有级别日志都输出
生产环境
define: { LOG_LEVEL: JSON.stringify('warn') }
只输出 warn 和 error
日志最佳实践
1. 使用正确的日志级别
logger.debug('变量值', { value }) // 调试信息 logger.info('用户登录成功') // 操作记录 logger.warn('Token即将过期') // 警告 logger.error('保存失败', error) // 错误
2. 包含上下文信息
logger.info('订单创建', { orderId: order.id, userId: user.id, amount: order.amount })
3. 避免敏感信息
❌ logger.info('用户密码', { password: '123456' }) ✅ logger.info('用户登录', { username: 'admin' })
4. 使用错误监控
try { await riskyOperation() } catch (error) { captureError(error, { type: 'business', context: {...} }) // 然后处理错误 }
错误分类
项目支持的错误类型:
- network:网络错误
- api:API调用错误
- business:业务逻辑错误
- component:组件错误
- runtime:运行时错误
- resource:资源加载错误
查看日志的位置
浏览器控制台
开发环境所有日志都在控制台
错误监控页面
访问:http://localhost:5109/operations/error-monitor
功能:
- 查看所有捕获的错误
- 按来源、类型、时间筛选
- 导出错误报告 Excel
- 清除错误记录
localStorage
错误存储: Key: btc_error 格式:{ errors: { [date]: FormattedError[] } }
查看: 浏览器 DevTools > Application > Local Storage
请求日志
查看请求日志
import { getRequestLogs } from '@/utils/request-logger'
const logs = getRequestLogs() console.table(logs)
日志内容
每条日志包含:
- url: 请求URL
- method: 请求方法
- status: 响应状态
- duration: 耗时(ms)
- timestamp: 时间戳
- params: 请求参数(脱敏)
- response: 响应数据(部分)
日志导出
import { exportRequestLogs } from '@/utils/request-logger' exportRequestLogs() // 导出为 Excel
性能监控
关键指标日志
logger.info('页面加载耗时', { loadTime: performance.now() })
logger.info('API调用耗时', { api: '/api/data', duration: 350 })
用户行为日志
logger.info('用户操作', { action: 'click', target: 'save-button', module: 'warehouse' })
日志存储策略
前端
- Console:开发环境所有日志
- localStorage:错误日志(最近7天)
- IndexedDB:请求日志(可选,未启用)
后端(建议)
- 创建日志上报 API
- 批量上报错误日志
- 存储到数据库或日志服务
集成第三方日志服务(可选)
Sentry
pnpm add @sentry/vue
import * as Sentry from '@sentry/vue'
Sentry.init({ app, dsn: 'your-sentry-dsn', integrations: [ new Sentry.BrowserTracing(), ], tracesSampleRate: 1.0, })
其他选项
- 阿里云日志服务(SLS)
- 腾讯云日志服务(CLS)
- ELK Stack
- Grafana Loki
常见问题
Q: 如何查看某个应用的所有错误? A: 访问 operations-app 错误监控页面,按来源筛选
Q: 日志太多影响性能? A: 生产环境设置 LOG_LEVEL=warn,减少日志输出
Q: 如何上报到服务器? A: 在 initErrorMonitor 的 onError 回调中发送API请求
Q: 请求日志存哪里? A: 内存中(可配置存储到 localStorage)
相关工具
查看错误统计: 访问 operations-app 错误监控页面
导出错误报告: 使用 BtcErrorMonitorExport 组件
清理旧日志: localStorage.removeItem('btc_error')
下一步
需要排查错误?→ 使用 troubleshooting 技能 需要导出日志?→ 使用 excel-toolkit 技能
Next.js App Router Expert
Development
A skill that turns Claude into a Next.js App Router expert.
README Generator
Development
Creates professional and comprehensive README.md files for your projects.
API Documentation Writer
Development
Generates comprehensive API documentation in OpenAPI/Swagger format.