UNPKG

@ones-op/node-host

Version:
51 lines (50 loc) 2.44 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.printfFormat = void 0; const protocol_1 = require("../protocol"); const lodash_1 = require("lodash"); const logs_1 = require("./logs"); const config_1 = require("../config"); const moment_1 = __importDefault(require("moment")); // DEBUG 不在pb定义里,此处给一个-1的Level值,以便在本地日志中显示与索引 const DEBUG_LOG_LOCAL_LEVEL = -1; /** * 格式化日志,与开放平台日志格式一致 */ const printfFormat = (plugin) => (info) => { const { LogMessage } = protocol_1.protocol; const { level, message, statusCode, stack } = info; // 根据Logger的level,得到对应的pb级别 const LevelKey = (0, lodash_1.upperFirst)(level); const pbLevel = LogMessage.LogLevel[LevelKey] ?? DEBUG_LOG_LOCAL_LEVEL; const logRole = plugin ? LogMessage.LogRole.Plugin : LogMessage.LogRole.Host; // 错误logger未主动设置statusCode,默认设为500 let ErrorCode = statusCode?.toString() ?? null; if (!ErrorCode && [LogMessage.LogLevel.Error, LogMessage.LogLevel.Fatal].includes(pbLevel)) { ErrorCode = '500'; } // 日志内容限制长度1024字符 const msg = message?.length > 1024 ? message.substring(0, 1024) : message; const timest = (0, moment_1.default)().local().format('YYYY-MM-DD HH:mm:ss.SSS'); // 开启了才上报(默认开启,兼容以前的逻辑,后续会移除) // DEBUG 日志不能也不应该发送给平台,不然会导致重复JSON序列化,指数倍增\\\.... if (config_1.config.platform.report_log_interval > 0 && level !== 'debug') { const logMessage = { pbLevel, ErrorCode, Role: logRole, Timestamp: +Date.now().toString().slice(0, -3), Message: msg, CauseByMessage: stack, HostDescriptor: (0, protocol_1.createHostDescriptor)(), PluginInstanceDescriptor: plugin, }; logs_1.logs.add(logMessage); } const role = logRole === LogMessage.LogRole.Plugin ? 'Plugin' : 'Host'; return `[${timest}] [${LevelKey}] [${role}] [${config_1.config.plugin.app_id}:${config_1.config.plugin.instance_id}] ${info.message}`; }; exports.printfFormat = printfFormat;