我正在开发一个使用多个 Nest 存盘库的项目,大约 4 个。每个存盘库都需要实作日志记录以记录诸如
- 服务器生命周期事件
- 未捕获的错误
- HTTP 请求/回应
理想情况下,我想将所有内容打包成一个模块,我可以将其发布到我公司的 NPM 组织,并直接在我的每个项目中使用。这样,在每个项目中设定日志记录所需的代码非常少。
我想登录服务器生命周期事件的其中一件事是服务器的 url。我知道你可以app.getUrl()
在引导阶段获得这个,但是像这样在模块的生命周期钩子中访问应用程序实体会很棒。
@Module({})
export class LoggingModule implements NestModule {
onApplicationBootstrap() {
console.log(`Server started on ${app.getUrl()}`)
}
beforeApplicationShutdown() {
console.log('shutting down')
}
onApplicationShutdown() {
console.log('successfully shut down')
}
configure(consumer: MiddlewareConsumer) {
consumer.apply(LoggingMiddleware).forRoutes('*')
}
}
这可能吗?
uj5u.com热心网友回复:
没有办法(可能除了 hacky 之外)在模块中访问应用程序本身。
正如您在此处看到的,app.getUrl()
使用底层 HTTP 服务器。因此,我猜您可以使用 provider 检索相同的资料HttpAdapterHost
。
0 评论