让morgan记录器模块在日志文件中的新行上写入每个日志条目是有问题的。
我已经编写了一个快速应用程序,将用户身份验证到我们订阅的资源中,我需要在应用程序中添加日志记录。我让morgan设置为写一个文件,但是日志文件中的每个条目都写在同一行上,而不是写到一个新行。
下面是我的代码
//requiring express and morgan
var express = require('express');
var morgan = require('morgan');
//defining the file to write log entries to
var accessLogStream = fs.createWriteStream(path.join('logs', 'access.log'), {flags: 'a'});
//defining what to log with morgan
app.use(morgan(':date[iso], :remote-addr, :status, :response-time ms', {stream: accessLogStream}));我遗漏了什么?我尝试将/n添加到morgan格式的末尾,如下所示:
app.use(morgan(':date[iso], :remote-addr, :status, :response-time ms /n', {stream: accessLogStream}));但这导致了一个错误。错误说:
undefined:8
(tokens["response-time](req, res) || "-") + " ms
SyntaxError: Invalid or unexpeceted token发布于 2018-07-24 17:51:52
摩根实际上是用一个新行写的:https://github.com/expressjs/morgan/blob/master/index.js#L130
注意,这是一个unix换行符。如果您在Windows上,您应该使用一个呈现非Windows换行符(即不是记事本)的应用程序来读取该文件。
发布于 2020-01-15 22:58:58
问得好。我也在找那个。
确保安装了最新的摩根包。
这应该可以做到:
const express = require('express');
const expressApp = express();
const morgan = require('morgan');
expressApp.use(morgan(function (tokens, req, res) {
return [
'-------------------------\n', // <= horizontal line breaker added with every log
tokens.method(req, res),
tokens.url(req, res),
tokens.status(req, res),
tokens.res(req, res, 'content-length'), '-',
tokens['response-time'](req, res), 'ms'
].join(' ')
}));希望这能有所帮助。谢谢。
https://stackoverflow.com/questions/51504154
复制相似问题