1.0.1 • Published 4 years ago
@ttou/nest-winston v1.0.1
安装
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)
})
]
}