multi-automator
Version:
Multi terminal automation
78 lines (77 loc) • 2.23 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.get = exports.set = void 0;
/**
* @desc: log operate
* @author: john_chen
* @date: 2023.03.14
*/
const path_1 = require("path");
const winston_1 = require("winston");
const moment_1 = __importDefault(require("moment"));
const winston_daily_rotate_file_1 = __importDefault(require("winston-daily-rotate-file"));
let logger = {};
/**
* 设置日志句柄
*
* @param {string} dir 日志存储目录
* @param {string} label 日志标识
* @param {string} level 日志等级
* @param {string} maxFiles 日志最大存储时间
* @param {string} maxSize 日志文件最大尺寸
* @return {Object}
*/
function set(dir, label, level = 'info', maxFiles = '3d', maxSize = '100m') {
if (!dir) {
throw new Error('参数缺失:dir');
}
if (!label) {
throw new Error('label');
}
const myFormat = winston_1.format.combine(winston_1.format.label({ label }), winston_1.format.printf(({ level, message }) => {
return `[${process.pid}]` + `[${(0, moment_1.default)().format('HH:mm:ss')}]` + `[${level}] ${message}`;
}));
const transports = new winston_daily_rotate_file_1.default({
level,
maxSize,
maxFiles,
filename: (0, path_1.join)(dir, '%DATE%.log'),
});
logger[label] = (0, winston_1.createLogger)({
level,
format: myFormat,
transports,
});
return logger[label];
}
exports.set = set;
/**
* 获取日志句柄
*
* @param {string} label 日志标识
* @return {Object}
*/
function get(label) {
if (label) {
if (logger[label]) {
return logger[label];
}
else {
throw new Error('请先初始化日志句柄');
}
}
else {
let loggerLabels = Object.keys(logger);
if (0 === loggerLabels.length) {
throw new Error('请先初始化日志句柄');
}
else {
label = loggerLabels[0];
return logger[label];
}
}
}
exports.get = get;