温斯顿记录仪:记录相同信息的重复行

时间:2018-07-11 04:08:07

标签: javascript node.js winston

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

您会注意到,记录的信息会根据请求数相乘,即,在第三个请求上,将三行附加到文件中。

似乎无法找出问题所在:/

0 个答案:

没有答案