const Framework = require('../../framework/node-core-framework'); /** * Log代理模块 * 提供统一的日志接口,延迟获取logsService */ class LogProxy { constructor() { this._logsService = null; } /** * 获取logsService实例 * @returns {object} logsService实例 */ get logsService() { if (!this._logsService) { try { this._logsService = Framework.getServices().logsService; } catch (error) { console.error('无法获取logsService,使用默认日志:', error.message); } } return this._logsService; } /** * 获取调用位置信息 * @returns {object} 包含文件路径和行号的对象 */ getCallerInfo() { const stack = new Error().stack; const lines = stack.split('\n'); // 跳过前3行:Error、getCallerInfo、当前方法 for (let i = 3; i < lines.length; i++) { const line = lines[i]; // 匹配文件路径和行号 const match = line.match(/at\s+(.+?)\s+\((.+?):(\d+):(\d+)\)/); if (match) { const [, functionName, filePath, lineNumber, columnNumber] = match; return { functionName: functionName || 'anonymous', filePath: filePath, lineNumber: parseInt(lineNumber), columnNumber: parseInt(columnNumber) }; } } return null; } /** * 记录普通日志 * @param {...any} args 日志参数 */ log(...args) { this.logsService.log(...args); } /** * 记录错误日志 * @param {...any} args 日志参数 */ error(...args) { this.logsService.error(...args); } /** * 记录警告日志 * @param {...any} args 日志参数 */ warn(...args) { this.logsService.warn(...args); } } // 导出单例实例 module.exports = new LogProxy();