nomid2 commited on
Commit
608a3e0
·
verified ·
1 Parent(s): 657f030

Upload 4 files

Browse files
Files changed (1) hide show
  1. src/lib/logger.js +92 -1
src/lib/logger.js CHANGED
@@ -1,11 +1,22 @@
1
  /**
2
- * 日志系统模块
3
  * 提供完整的请求追踪、性能监控和错误记录功能
4
  */
5
  class Logger {
6
  constructor() {
7
  this.requestCounter = 0
8
  this.activeRequests = new Map()
 
 
 
 
 
 
 
 
 
 
 
9
  }
10
 
11
  /**
@@ -25,6 +36,76 @@ class Logger {
25
  return new Date().toISOString()
26
  }
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  /**
29
  * 记录请求开始
30
  * @param {string} method - HTTP方法
@@ -261,6 +342,16 @@ class Logger {
261
  })
262
  }
263
 
 
 
 
 
 
 
 
 
 
 
264
  /**
265
  * 记录性能指标
266
  * @param {string} requestId - 请求ID
 
1
  /**
2
+ * 结构化日志系统模块
3
  * 提供完整的请求追踪、性能监控和错误记录功能
4
  */
5
  class Logger {
6
  constructor() {
7
  this.requestCounter = 0
8
  this.activeRequests = new Map()
9
+
10
+ // 日志级别配置
11
+ this.LOG_LEVELS = {
12
+ ERROR: 0,
13
+ WARN: 1,
14
+ INFO: 2,
15
+ DEBUG: 3
16
+ }
17
+
18
+ // 当前日志级别(可通过环境变量配置)
19
+ this.currentLevel = this.LOG_LEVELS[process.env.LOG_LEVEL?.toUpperCase()] || this.LOG_LEVELS.INFO
20
  }
21
 
22
  /**
 
36
  return new Date().toISOString()
37
  }
38
 
39
+ /**
40
+ * 输出结构化日志
41
+ * @param {string} level - 日志级别
42
+ * @param {string} category - 日志分类
43
+ * @param {string} event - 事件类型
44
+ * @param {string} message - 日志消息
45
+ * @param {Object} data - 附加数据
46
+ */
47
+ log(level, category, event, message, data = {}) {
48
+ const levelValue = this.LOG_LEVELS[level.toUpperCase()]
49
+ if (levelValue > this.currentLevel) {
50
+ return // 跳过低级别日志
51
+ }
52
+
53
+ const logEntry = {
54
+ timestamp: this.getTimestamp(),
55
+ level: level.toUpperCase(),
56
+ category,
57
+ event,
58
+ message,
59
+ ...data
60
+ }
61
+
62
+ const logString = JSON.stringify(logEntry)
63
+
64
+ switch (level.toUpperCase()) {
65
+ case 'ERROR':
66
+ console.error(logString)
67
+ break
68
+ case 'WARN':
69
+ console.warn(logString)
70
+ break
71
+ case 'DEBUG':
72
+ console.debug(logString)
73
+ break
74
+ default:
75
+ console.log(logString)
76
+ }
77
+ }
78
+
79
+ /**
80
+ * 记录信息日志
81
+ * @param {string} event - 事件类型
82
+ * @param {string} message - 日志消息
83
+ * @param {Object} data - 附加数据
84
+ */
85
+ logInfo(event, message, data = {}) {
86
+ this.log('INFO', 'APPLICATION', event, message, data)
87
+ }
88
+
89
+ /**
90
+ * 记录警告日志
91
+ * @param {string} event - 事件类型
92
+ * @param {string} message - 日志消息
93
+ * @param {Object} data - 附加数据
94
+ */
95
+ logWarn(event, message, data = {}) {
96
+ this.log('WARN', 'APPLICATION', event, message, data)
97
+ }
98
+
99
+ /**
100
+ * 记录调试日志
101
+ * @param {string} event - 事件类型
102
+ * @param {string} message - 日志消息
103
+ * @param {Object} data - 附加数据
104
+ */
105
+ logDebug(event, message, data = {}) {
106
+ this.log('DEBUG', 'APPLICATION', event, message, data)
107
+ }
108
+
109
  /**
110
  * 记录请求开始
111
  * @param {string} method - HTTP方法
 
342
  })
343
  }
344
 
345
+ /**
346
+ * 记录全局错误信息(不需要requestId)
347
+ * @param {string} errorType - 错误类型
348
+ * @param {string} errorMessage - 错误消息
349
+ * @param {Object} errorDetails - 错误详情
350
+ */
351
+ logGlobalError(errorType, errorMessage, errorDetails = {}) {
352
+ this.log('ERROR', 'SYSTEM', errorType, errorMessage, errorDetails)
353
+ }
354
+
355
  /**
356
  * 记录性能指标
357
  * @param {string} requestId - 请求ID