1.0.1 • Published 4 years ago

@ttou/nest-winston v1.0.1

Weekly downloads
-
License
MulanPSL2
Repository
-
Last release
4 years ago

安装

npm install --save @ttou/nest-winston winston

快速开始

import { Module } from '@nestjs/common'
import { WinstonModule } from '@ttou/nest-winston'

@Module({
  imports: [
    WinstonModule.forRoot({
      // 模块配置
    })
  ]
})
export class AppModule {}

异步配置

import { Module } from '@nestjs/common'
import { WinstonModule } from '@ttou/nest-casbin'

@Module({
  imports: [
    WinstonModule.forRootAsync({
      useFactory: () => ({
        // options
      }),
      inject: []
    })
  ]
})
export class AppModule {}

另外, 也可以使用 useClass 语法:

WinstonModule.forRootAsync({
  useClass: WinstonConfigService
})

示例

main.ts

import { NestFactory } from '@nestjs/core'
import {
  ExpressAdapter,
  NestExpressApplication
} from '@nestjs/platform-express'
import { AppModule } from './app.module'
import { loggerOptions } from './logger.options'

async function bootstrap() {
  const httpAdapter = new ExpressAdapter()
  const app = await NestFactory.create<NestExpressApplication>(
    AppModule,
    httpAdapter,
    {
      logger: WinstonModule.createLogger(loggerOptions)
    }
  )

  app.useLogger(logger)

  await app.listen(3000)
}
bootstrap()

logger.options.ts

import { transports, format } from 'winston'
import dayjs from 'dayjs'

const logFormat = format.printf(({ level, message, timestamp, ...meta }) => {
  return `[Nest] ${dayjs(timestamp).format(
    'YYYY-MM-DD HH:mm:ss:SSS'
  )} [${level.toUpperCase()}] [${meta.context}] ${message}`
})

export const loggerOptions = {
  transports: [
    new transports.Console({
      format: format.combine(format.timestamp(), logFormat)
    })
  ]
}
1.0.1

4 years ago

1.0.0

4 years ago