1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
"use strict";
var fs = require("fs");
var path = require("path");
var fse = require("fs-extra");
var winston = require("winston");
var config = require("./config");
var cwd = process.cwd();
var logger;
if (global.__glaceLogger) {
logger = global.__glaceLogger;
} else {
logger = global.__glaceLogger = winston.createLogger({
level: config.args.logLevel || "debug",
format: winston.format.combine(
winston.format.timestamp(),
winston.format.printf(info => {
return `${info.timestamp} ${info.level}: ${info.message}`;
}),
),
});
logger.add(new winston.transports.File({
filename: path.resolve(cwd, config.args.log || "glace.log"),
}));
if (config.args.stdoutLog) {
logger.add(new winston.transports.Console());
}
logger.setFile = logFile => {
var logPath = path.resolve(cwd, logFile);
if (!logPath.endsWith(".log")) logPath += ".log";
fse.mkdirsSync(path.dirname(logPath));
if (logger._file) logger.remove(logger._file);
logger._file = new winston.transports.File({ filename: logPath });
logger.add(logger._file);
};
logger.getFile = () => {
if (!logger._file) return null;
return path.resolve(logger._file.dirname, logger._file.filename);
};
logger.resetFile = () => {
var logPath = logger.getFile();
if (!logPath) return;
fs.unlinkSync(logPath);
logger.setFile(logPath);
};
}
module.exports = logger;