111 lines
14 KiB
JavaScript
111 lines
14 KiB
JavaScript
|
import config from "config";
|
||
|
import { v4 as uuid } from "uuid";
|
||
|
import Log from "./models/Log";
|
||
|
const LOG_LEVEL = config.get('log_level');
|
||
|
const DB_LOG_LEVEL = config.get('db_log_level');
|
||
|
export default class Logger {
|
||
|
static silentError(error, ...message) {
|
||
|
return this.log('ERROR', message, error, true) || '';
|
||
|
}
|
||
|
static error(error, ...message) {
|
||
|
return this.log('ERROR', message, error) || '';
|
||
|
}
|
||
|
static warn(...message) {
|
||
|
this.log('WARN', message);
|
||
|
}
|
||
|
static info(...message) {
|
||
|
this.log('INFO', message);
|
||
|
}
|
||
|
static debug(...message) {
|
||
|
this.log('DEBUG', message);
|
||
|
}
|
||
|
static dev(...message) {
|
||
|
this.log('DEV', message);
|
||
|
}
|
||
|
static log(level, message, error, silent = false) {
|
||
|
const levelIndex = LogLevel[level];
|
||
|
if (levelIndex <= LogLevel[LOG_LEVEL]) {
|
||
|
if (error) {
|
||
|
if (levelIndex > LogLevel.ERROR)
|
||
|
this.warn(`Wrong log level ${level} with attached error.`);
|
||
|
}
|
||
|
else {
|
||
|
if (levelIndex <= LogLevel.ERROR)
|
||
|
this.warn(`No error attached with log level ${level}.`);
|
||
|
}
|
||
|
const computedMsg = message.map(v => {
|
||
|
if (typeof v === 'string') {
|
||
|
return v;
|
||
|
}
|
||
|
else {
|
||
|
return JSON.stringify(v, (key, value) => {
|
||
|
if (value instanceof Object) {
|
||
|
if (value.type === 'Buffer') {
|
||
|
return `Buffer<${Buffer.from(value.data).toString('hex')}>`;
|
||
|
}
|
||
|
else if (value !== v) {
|
||
|
return `[object Object]`;
|
||
|
}
|
||
|
}
|
||
|
if (typeof value === 'string' && value.length > 96) {
|
||
|
return value.substr(0, 96) + '...';
|
||
|
}
|
||
|
return value;
|
||
|
}, 4);
|
||
|
}
|
||
|
}).join(' ');
|
||
|
const log = new Log({});
|
||
|
log.setLevel(level);
|
||
|
log.message = computedMsg;
|
||
|
log.setError(error);
|
||
|
let logID = Buffer.alloc(16);
|
||
|
uuid({}, logID);
|
||
|
log.setLogID(logID);
|
||
|
let output = `[${level}] `;
|
||
|
let pad = output.length;
|
||
|
if (levelIndex <= LogLevel[DB_LOG_LEVEL])
|
||
|
output += `${log.getLogID()} - `;
|
||
|
output += computedMsg.replace(/\n/g, '\n' + ' '.repeat(pad));
|
||
|
switch (level) {
|
||
|
case "ERROR":
|
||
|
if (silent || !error) {
|
||
|
console.error(output);
|
||
|
}
|
||
|
else {
|
||
|
console.error(output, error);
|
||
|
}
|
||
|
break;
|
||
|
case "WARN":
|
||
|
console.warn(output);
|
||
|
break;
|
||
|
case "INFO":
|
||
|
console.info(output);
|
||
|
break;
|
||
|
case "DEBUG":
|
||
|
case "DEV":
|
||
|
console.debug(output);
|
||
|
break;
|
||
|
}
|
||
|
if (levelIndex <= LogLevel[DB_LOG_LEVEL]) {
|
||
|
log.save().catch(err => {
|
||
|
if (!silent && err.message.indexOf('ECONNREFUSED') < 0) {
|
||
|
console.error({ save_err: err, error });
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
return log.getLogID();
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
constructor() {
|
||
|
}
|
||
|
}
|
||
|
export var LogLevel;
|
||
|
(function (LogLevel) {
|
||
|
LogLevel[LogLevel["ERROR"] = 0] = "ERROR";
|
||
|
LogLevel[LogLevel["WARN"] = 1] = "WARN";
|
||
|
LogLevel[LogLevel["INFO"] = 2] = "INFO";
|
||
|
LogLevel[LogLevel["DEBUG"] = 3] = "DEBUG";
|
||
|
LogLevel[LogLevel["DEV"] = 4] = "DEV";
|
||
|
})(LogLevel || (LogLevel = {}));
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2VyLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJMb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyxFQUFFLElBQUksSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUUvQixNQUFNLFNBQVMsR0FBK0IsTUFBTSxDQUFDLEdBQUcsQ0FBUyxXQUFXLENBQUMsQ0FBQztBQUM5RSxNQUFNLFlBQVksR0FBK0IsTUFBTSxDQUFDLEdBQUcsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUVwRixNQUFNLENBQUMsT0FBTyxPQUFPLE1BQU07SUFDaEIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFZLEVBQUUsR0FBRyxPQUFjO1FBQ3JELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBWSxFQUFFLEdBQUcsT0FBYztRQUMvQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFjO1FBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBYztRQUNoQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQWM7UUFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxD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
|