3

我在输出中得到空行,如下所示我在这里使用 morgan 和 winston 组合来登录文件如何避免这些空行?

//logger 
const logger = new winston.Logger({
    transports: [
        new winston.transports.File({
            filename: './logs/dca_ui.log',
            handleExceptions: true,
            json: false,
            maxsize: MAX_SIZE_LOG,
            maxFiles: MAX_LOG_FILES,
            colorize: false,
        }),
     ],
     exitOnError: false,
});

//writestream
const stream = {
    write: (message, encoding) => {
        logger.info(message);
    },
};

app.use((morgan(':date :status :method :url :response-time', { stream: stream })));

输出:

5 2016-11-15T04:21:18.981Z - 信息:周二,2016 年 11 月 15 日 04:21:18 GMT 200 GET /index.js 4.539
6
7 2016-11-15T04:21:19.786Z - 信息:周二,15 2016 年 11 月 04:21:19 GMT 200 GET /urest/v1/template?start=0&count=20&sort=templateName:asc 106.379
8
9 2016-11-15T04:21:22.835Z - 信息:2016 年 11 月 15 日星期二 04:21 :22 GMT 200 GET /urest/v1/template/7b4ca205-7b75-459c-81f1-a61fc8b6be69?view=condense 122.692

4

1 回答 1

14

morgan 在流的末尾添加 \n - 新行。如果您记录以下内容,您可以看到它: logger.info(JSON.stringify(message));

所以要删除它,你需要这样的东西:

//writestream
const stream = {
    write: (message, encoding) => {
        logger.info(message.substring(0,message.lastIndexOf('\n')));
    },
};

这是关于它的讨论: https ://github.com/expressjs/morgan/issues/70

于 2016-11-30T11:32:37.027 回答