const winston = requires('winston');
const logDir = "./logs/";
function filePath(prefix) {
// get date time for file name
let today = new Date();
let dd = today.getDate();
let mm = today.getMonth() + 1; //January is 0!
let yyyy = today.getFullYear();
if (dd < 10) { dd = '0' + dd; }
if (mm < 10) { mm = '0' + mm; }
// file name format: mm_dd_yyyy_type
let name = mm + '_' + dd + '_' + yyyy + '_' + prefix + '_logs.txt';
let path = logDir + prefix + "-logs/" + name;
return path;
}
const { combine, timestamp, printf } = winston.format;
const logFormat = printf(info => {
return `${info.timestamp} ${info.level}: ${info.message}`
});
let infoLogger = winston.createLogger({
format: combine(
timestamp(),
logFormat
),
exitOnError: false
});
let info = function (data) {
let infoDir = logDir + "info-logs/";
// create the info log directory if it does not exist
if (!file.existsSync(infoDir)) file.mkdirSync(infoDir);
const fileTransport = new winston.transports.File({
level: "info",
filename: filePath("info"),
handleExceptions: true,
json: true,
});
infoLogger.add(fileTransport);
infoLogger.info(data);
}
这是我正在使用的代码。在前端,我有一个表单,该表单向后端发送请求。在请求处理程序中,将执行以下代码段:
const logger = require("../logger");
logger.info("some info logged");
服务器启动时。根据第一个请求,正确记录了一行
2018-07-11T03:36:24.502Z info: some info logged
但是,在说了第三次发送请求之后,这就是结果
2018-07-11T03:36:24.502Z info: some info logged
2018-07-11T03:36:28.502Z info: some info logged
2018-07-11T03:36:28.502Z info: some info logged
2018-07-11T03:36:35.502Z info: some info logged
2018-07-11T03:36:35.502Z info: some info logged
2018-07-11T03:36:35.502Z info: some info logged
您会注意到,记录的信息会根据请求数相乘,即,在第三个请求上,将三行附加到文件中。
似乎无法找出问题所在:/