Nodejs Nestjs日志记录插件@nestjs/morgan的使用
Nodejs Nestjs日志记录插件@nestjs/morgan的使用[@nestjs](/user/nestjs)/morgan
是一个用于 NestJS 应用程序的日志记录中间件,它基于 morgan
。morgan
是一个流行的 HTTP 请求日志记录工具,适用于 Node.js 的 Express 框架。下面是如何在 NestJS 项目中使用 [@nestjs](/user/nestjs)/morgan
插件。
安装
首先,你需要安装必要的包:
npm install [@nestjs](/user/nestjs)/common [@nestjs](/user/nestjs)/core [@nestjs](/user/nestjs)/morgan morgan
配置 Morgan 中间件
接下来,你需要在你的 NestJS 应用程序中配置 Morgan 中间件。这通常在主模块(通常是 AppModule
)中完成,但更推荐的方式是在单独的中间件模块中进行配置,以保持项目的整洁。
创建中间件模块
创建一个新的模块,例如 LoggerModule
,在这个模块中配置 Morgan 中间件:
import { Module, NestModule, MiddlewareConsumer } from '[@nestjs](/user/nestjs)/common';
import * as morgan from 'morgan';
@Module({
// 这里可以添加其他需要的模块
})
export class LoggerModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(morgan('combined'))
.forRoutes('*');
}
}
这里我们使用了 morgan('combined')
,它会提供一个标准的 Apache Combined 日志格式。你也可以选择其他格式,如 'tiny'
, 'short'
, 'dev'
等,具体取决于你的需求。
在应用程序中启用 LoggerModule
确保在你的主要应用模块(通常是 AppModule
)中导入并使用这个新的 LoggerModule:
import { Module } from '[@nestjs](/user/nestjs)/common';
import { LoggerModule } from './logger/logger.module'; // 假设 LoggerModule 在 logger 文件夹中
@Module({
imports: [
// 其他模块
LoggerModule,
],
controllers: [],
providers: [],
})
export class AppModule {}
测试
启动你的 NestJS 应用程序,并发送一些请求到服务器。你应该能够在控制台看到请求日志输出。
注意事项
- 确保在生产环境中不要使用开发模式的日志格式(如
'dev'
),因为它可能会泄露敏感信息。 - 如果你使用的是反向代理(如 Nginx),可能需要调整日志记录策略,避免重复记录日志。
通过上述步骤,你应该能够成功地在 NestJS 应用程序中集成和使用 [@nestjs](/user/nestjs)/morgan
插件来记录 HTTP 请求日志。
当然,@nestjs/morgan 是一个非常实用的日志记录插件,它基于 Morgan 库,能够帮助你在 NestJS 项目中更优雅地处理 HTTP 请求日志。
首先,你需要安装 @nestjs/morgan 和 Morgan:
npm install --save [@nestjs](/user/nestjs)/morgan morgan
然后,在你的模块文件(例如 app.module.ts)中,你可以这样配置它:
import { Module } from '[@nestjs](/user/nestjs)/common';
import { APP_FILTER, APP_INTERCEPTOR, Logger } from '[@nestjs](/user/nestjs)/core';
import { MorganModule } from '[@nestjs](/user/nestjs)/morgan';
import * as morgan from 'morgan';
@Module({
imports: [
MorganModule.forRoot({
format: 'combined',
ignore: (req, res) => res.statusCode < 400,
stream: process.stderr,
}),
],
providers: [
{
provide: APP_INTERCEPTOR,
useClass: LoggerInterceptor,
},
],
})
export class AppModule {}
这里,我们设置了 Morgan 的格式为 combined
,并且只记录状态码大于等于 400 的请求。你也可以自定义拦截器来处理日志输出。
希望这能帮到你!如果需要更多定制化的日志策略,可以考虑使用 NestJS 提供的 Logger 模块。
在NestJS中使用@nestjs/morgan
可以很方便地集成morgan中间件来处理HTTP请求的日志记录。Morgan是Node.js中最受欢迎的HTTP请求日志库之一。下面我将指导你如何在NestJS项目中安装和配置@nestjs/morgan
。
第一步:安装依赖
首先,你需要在你的项目中安装@nestjs/morgan
包。打开终端并运行以下命令:
npm install @nestjs/morgan morgan --save
这将会安装@nestjs/morgan
以及它的依赖morgan
。
第二步:导入模块
在你的应用程序主模块(通常是app.module.ts
)中,导入MorganModule
。你可以通过调用MorganModule.forRoot()
来配置morgan的设置。以下是一个简单的示例:
import { Module } from '@nestjs/common';
import { MorganModule, MorganInterceptor } from '@nestjs/morgan';
import * as morgan from 'morgan';
@Module({
imports: [
MorganModule.forRoot({
format: 'combined', // 日志格式,这里使用了'morgan'内置的'combined'格式
stream: process.stderr, // 输出到标准错误流,你可以选择输出到文件或其它流
}),
],
providers: [
{
provide: APP_INTERCEPTOR,
useClass: MorganInterceptor('combined'), // 使用全局拦截器
},
],
})
export class AppModule {}
在这个例子中,我们设置了morgan的输出格式为’combined’,并且将其配置为直接输出到标准错误流。我们还添加了一个全局拦截器MorganInterceptor
来捕获所有的HTTP请求。
第三步:测试日志记录
启动你的应用,并访问几个不同的路由,你应该能在控制台看到类似下面的输出:
::1 - - [25/Jul/2023:14:45:29 +0000] "GET /api HTTP/1.1" 200 2 "-" "PostmanRuntime/7.28.4" "-"
这个输出包含了客户端IP、请求时间、请求方法、URL、HTTP状态码、响应大小等信息。
这就是如何在NestJS中使用@nestjs/morgan
的基本步骤。你可以根据需要调整morgan的配置,比如更改日志格式或者输出目标等。
@nestjs/morgan
是一个用于 NestJS 的日志记录插件,基于 Morgan。要使用它,首先需要安装依赖:
npm install @nestjs/common @nestjs/core morgan
然后,在你的模块中导入 MorganModule
并配置:
import { Module } from '@nestjs/common';
import { MorganModule } from '@nestjs/morgan';
@Module({
imports: [
MorganModule.forRoot({
stream: writeLog, // 自定义日志写入方式
skip: (req, res) => res.statusCode < 400, // 只记录错误状态码
format: ':method :url', // 自定义日志格式
}),
],
})
export class AppModule {}
最后,在控制器或服务中注入 Request
和 Response
对象来触发日志记录。