@treelab/logger-metrics-middleware
TypeScript icon, indicating that this package has built-in type declarations

1.0.28 • Public • Published

HTTP Log使用

Log中间件配置说明

{
  serviceName?: string        // 当前服务名
  prettyPrint?: boolean       // 是否以json方式输出, 默认false
  headers?: string[]          // 需要记录的header列表
  ...                         // 后续新增..
}

服务名配置说明

下面2种方法任选一个:

  1. 配置环境变量 SERVICE_NAME 为当前服务名,log中的serviceName会读env中 SERVICE_NAME 的值.
  1. 初始化时,传递serviceName参数 (暂不可用)
HTTP:

  app.use(ExpressHttpLoggerMiddleware({serviceName: 'svcName'}))

Grpc:

  @UseInterceptors(new GrpcLoggerMiddleware({ serviceName: 'svcName' }))

Express || Nestjs 使用

1.导入

import { ExpressHttpLoggerMiddleware } from '@treelab/logger-metrics-middleware'
import * as Prometheus from 'prom-client'

2. 使用中间件

  // 日志
  app.use(ExpressHttpLoggerMiddleware())

  // 指标
  app.use('/metrics', async (req, res) => {
    res.set('Content-Type', Prometheus.register.contentType)
    const end = await Prometheus.register.metrics()
    res.end(end)
  })
}

完整例子

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ExpressHttpLoggerMiddleware } from '@treelab/logger-metrics-middleware'
import * as Prometheus from 'prom-client'
import bodyParser = require('body-parser');

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.use(bodyParser.json());
  app.use(ExpressHttpLoggerMiddleware())

  app.use('/metrics', async (req, res) => {
    res.set('Content-Type', Prometheus.register.contentType)
    const end = await Prometheus.register.metrics()
    res.end(end)
  })

  await app.listen(3000);
}
bootstrap();

Koa 使用

1.导入

import { KoaHttpLoggerMiddleware } from '@treelab/logger-metrics-middleware/dist/http-logger'
import * as Prometheus from 'prom-client'

2. 使用中间件

  // 日志
  app.use(KoaHttpLoggerMiddleware())

  // 指标
  router.get('/metrics',async (ctx) => {
    ctx.header.set('Content-Type', Prometheus.register.contentType)
    const end = await Prometheus.register.metrics()
    ctx.body = end
  })
}

Grpc Log 使用(仅支持Nestjs)

导入

import { GrpcLoggerMiddleware } from '@treelab/logger-metrics-middleware';

使用

 // 在grpc Controller 上使用

@UseInterceptors(GrpcLoggerMiddleware)
@Controller()
export class GrpcController {
  constructor(){}

}

Readme

Keywords

none

Package Sidebar

Install

npm i @treelab/logger-metrics-middleware

Weekly Downloads

5

Version

1.0.28

License

MIT

Unpacked Size

35.7 kB

Total Files

17

Last publish

Collaborators

  • weih.cao
  • rickytyho
  • treelab-official
  • derekchan916
  • treelab-will
  • peterl348
  • simon.shi