问题描述
我想记录 express gateway 收到的每个请求,但似乎我无法决定记录什么。
我尝试整合morgan('immediate')
来自https://github.com/expressjs/morgan
/* Create a sub app */
const subApp = express();
subApp.use(registration({ container }));
subApp.use(guestRequest({ container }));
subApp.use(statistics({ container }));
subApp.use(deleteUser({ container }));
subApp.use(relationRequest({ container }));
subApp.use('/docs',swaggerUi.serve,swaggerUi.setup(swaggerDocument,options));
subApp.use(morgan('immediate'))
subApp.use(cors({ origin: true,credentials: true }));
subApp.set('view engine','ejs');
subApp.set('views',viewsPath);
但它看起来没有被使用。
有谁成功地在 express gateway 中集成了高级登录功能?
我也试过 Longjohn 和同样的问题。
解决方法
您可以使用开箱即用的 Express Gateway 来做到这一点。
首先,为所有请求定义一个 apiEndpoint:
apiEndpoints:
all:
host: "*"
paths: "*"
然后,设置一个 pipeline,它 logs 所有请求都命中这个 apiEndpoint:
policies:
log
pipelines:
logRequest:
apiEndpoints:
- all
policies:
- log
- action:
message: "{req.method} {req.originalUrl} ${JSON.stringify(req.headers)}"
如果您需要记录更多日志,请考虑使用环境变量启用 Express Gateway 和/或 Express 诊断日志记录:
-
LOG_LEVEL=debug
(用于快速网关) -
DEBUG=express:*
(用于 Express.js)