首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >速成应用程序中的Morgan记录器不会在每个条目中创建新行

速成应用程序中的Morgan记录器不会在每个条目中创建新行
EN

Stack Overflow用户
提问于 2018-07-24 17:08:18
回答 2查看 1.4K关注 0票数 2

让morgan记录器模块在日志文件中的新行上写入每个日志条目是有问题的。

我已经编写了一个快速应用程序,将用户身份验证到我们订阅的资源中,我需要在应用程序中添加日志记录。我让morgan设置为写一个文件,但是日志文件中的每个条目都写在同一行上,而不是写到一个新行。

下面是我的代码

代码语言:javascript
复制
//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格式的末尾,如下所示:

代码语言:javascript
复制
app.use(morgan(':date[iso], :remote-addr, :status, :response-time ms /n', {stream: accessLogStream}));

但这导致了一个错误。错误说:

代码语言:javascript
复制
undefined:8
(tokens["response-time](req, res) || "-") + " ms

SyntaxError: Invalid or unexpeceted token
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-24 17:51:52

摩根实际上是用一个新行写的:https://github.com/expressjs/morgan/blob/master/index.js#L130

注意,这是一个unix换行符。如果您在Windows上,您应该使用一个呈现非Windows换行符(即不是记事本)的应用程序来读取该文件。

票数 1
EN

Stack Overflow用户

发布于 2020-01-15 22:58:58

问得好。我也在找那个。

确保安装了最新的摩根包。

这应该可以做到:

代码语言:javascript
复制
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(' ')
}));

希望这能有所帮助。谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51504154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档