md5-fight-plus
Version:
83 lines (82 loc) • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createLogger = exports.Level = exports.onAttack = exports.onUnderAttack = exports.RoundStart = void 0;
const fs_1 = require("fs");
const lodash_1 = require("lodash");
exports.RoundStart = "RoundStart";
exports.onUnderAttack = "onUnderAttack";
exports.onAttack = "onAttack";
//消息级别:Level(info,warning,error
var Level;
(function (Level) {
Level[Level["error"] = 0] = "error";
Level[Level["warn"] = 1] = "warn";
Level[Level["info"] = 2] = "info";
Level[Level["http"] = 3] = "http";
Level[Level["debug"] = 4] = "debug";
Level[Level["system"] = 5] = "system";
})(Level || (exports.Level = Level = {}));
//根据消息级别来归类Log
//根据时间顺序来归类Log
const createLogger = (options) => {
const LogContainer = [];
const add = (level, type = "unknown", message) => {
const players = options.battleField.players;
const newLog = {
message,
time: new Date(),
level,
type,
players: {
[players.left.name]: (0, lodash_1.cloneDeep)((0, lodash_1.omit)(players.left, ["hooks", "battleField"])),
[players.right.name]: (0, lodash_1.cloneDeep)((0, lodash_1.omit)(players.right, ["hooks", "battleField"])),
},
};
LogContainer.push(newLog);
return LogContainer.length - 1;
};
const addError = (message, type) => add(Level.error, type, message);
const addWarn = (message, type) => add(Level.warn, type, message);
const addInfo = (message, type) => add(Level.info, type, message);
const addHttp = (message, type) => add(Level.http, type, message);
const addDebug = (message, type) => add(Level.debug, type, message);
const addSystem = (message, type) => add(Level.system, type, message);
const getByLevel = (level) => {
return LogContainer.filter((item) => item.level === level);
};
const getByType = (type) => {
return LogContainer.filter((item) => item.type === type);
};
const getByMessage = (message) => {
return LogContainer.filter((item) => item.message.includes(message));
};
const getByScopeLevel = (minLevel, maxLevel) => {
return LogContainer.filter((item) => {
return item.level <= maxLevel && item.level >= minLevel;
});
};
const storageLogs = (callback) => {
if (options.mode === "JSON" && options.filePath) {
(0, fs_1.writeFile)(options.filePath, JSON.stringify(LogContainer), (err) => callback(err));
return;
}
//用户自己处理Log
callback(LogContainer);
};
return {
add,
addError,
addWarn,
addDebug,
addInfo,
addHttp,
addSystem,
getByLevel,
getByScopeLevel,
getByType,
getByMessage,
storageLogs,
LogContainer,
};
};
exports.createLogger = createLogger;