Node.js摩根记录器的输出未出现在控制台上

时间:2018-09-06 08:15:05

标签: node.js morgan

我正在使用node.js后端处理一个新项目,并且我的morgan记录器工作正常。最初,我无法使用任何预定义的morgan模板(tinyshort等)从其获取任何输出,没有任何内容传播到输出。我提供了自定义日志记录功能以验证是否在堆栈上完全调用了morgan:

app.use(morgan((tokens, req, res) => {
console.log('AAAAAAAAAAA');
return 'ABABABABABAA';
}, { stream: process.stdout }));

AAAAAAAAAAA的序列确实通过日志功能内的colsole.log传播到控制台输出(证明morga实际上在每个请求上被调用),但是日志功能未提供其ABABABABABA序列完全没有。

只要我能够想象预定义的格式可能会由于req / res对象的非常规名称而失败(顺便说一句,情况并非如此),然后返回纯格式来自记录器功能的文本应明显传播以直接输出。

编辑

将morgan选项设置为{immediate: true}也不能解决问题。

1 个答案:

答案 0 :(得分:2)

就我而言,问题在于创建应用后我没有立即调用“ morgan”。当我改变立场时,它解决了这个问题。我在“摩根”页面上找不到与此相关的任何参考,但是我在这里的另一个答案中找到了它:Express Morgan not writing logs to file or STDOUT

工作解决方案:

let app = express()
app.use(morgan('combined'))     <--- morgan right after app
app.set('views', './views')
app.set('view engine', 'ejs')
app.use('/', routes)

无效的代码(以前):

let app = express()
app.set('views', './views')
app.set('view engine', 'ejs')
app.use('/', routes)
app.use(morgan('combined'))     <--- morgan