@ones-op/node-host
Version:
ONES Open Platform Node.js plugin host
51 lines (50 loc) • 2.44 kB
JavaScript
;
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;