Express 为什么Morgan Logger服务器中间件没有';你不能单独归档吗?
我在我的Express 为什么Morgan Logger服务器中间件没有';你不能单独归档吗?,express,logging,next.js,middleware,morgan,Express,Logging,Next.js,Middleware,Morgan,我在我的nextjs应用程序中添加了一个新的中间件来进行日志记录,因此我在我的server.js中有以下代码: // create a write stream (in append mode) const accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' }) // setup the logger server.use(morgan('combined', { st
nextjs
应用程序中添加了一个新的中间件来进行日志记录,因此我在我的server.js中有以下代码:
// create a write stream (in append mode)
const accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' })
// setup the logger
server.use(morgan('combined', { stream: accessLogStream }))
而且它正在毫无问题地工作
但是我想在中间件目录中的单独的文件中包含逻辑,因此我有:
middleware/logger/index.js
import morgan from "morgan";
import fs from 'fs';
import path from 'path';
export default (req, res, next) => {
var accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' })
return morgan('combined', { stream: accessLogStream });
};
在我的server.js中,我将有:(导入和初始化内容后)
其他的中间软件工作正常,但这个坏了。你知道为什么吗?我像这样更改了中间件,现在它工作正常:)
server.use(logger);
server.use(othermiddlewareone);
server.use(othermiddlewaretwo);
import type { Request, Response, Next } from './types';
import morgan from "morgan";
import fs from 'fs';
import path from 'path';
const accessLogStream = fs.createWriteStream(path.join(__dirname, 'server.log'), { flags: 'a' })
const logger = morgan('combined', { stream: accessLogStream })
export default async (req: Request, res: Response, next: Next) => {
logger(req, res, function (err) {
return next();
})
};