根据documentation,morgan
接受两个参数-格式字符串和选项对象。选项对象提到:
立即
根据请求而不是响应写日志行。这意味着 即使服务器崩溃,请求也会被记录下来,但是来自 响应(如响应代码,内容长度等)不能为 已记录。
我不清楚,immediate
的默认值是多少,因为我根本没有使用options
对象。是布尔值吗?
在Mac上,我可以看到NodeJS应用程序的日志。当以二进制形式移植到Windows时,不会报告所有响应项(状态,内容长度和响应时间)(即破折号)。
你能建议吗?
答案 0 :(得分:0)
查看source code会发现默认选项对象为{}
。
59 function morgan (format, options) {
60 var fmt = format
61 var opts = options || {} // opts == {}
所以要回答这个问题,它不是布尔值,而是因为在处理过程中事物的处理方式
133 if (immediate) { // immediate == undefined
134 // immediate log
135 logRequest()
136 } else {
137 // record response start
138 onHeaders(res, recordStartTime)
139
140 // log when response finished
141 onFinished(res, logRequest)
142 }
默认的值为 falsey ,因此在完成响应后进行记录。