60 lines
2.0 KiB
TypeScript
60 lines
2.0 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { NestApplication } from '@nestjs/core';
|
|
import { LoggerModule } from 'nestjs-pino';
|
|
import { LoggerConfig, loggerConfig } from './logger.config';
|
|
import { ConfigModule } from '@nestjs/config';
|
|
|
|
@Module({
|
|
imports: [
|
|
ConfigModule.forFeature(loggerConfig),
|
|
LoggerModule.forRootAsync({
|
|
imports: loggerConfig.asProvider().imports,
|
|
useFactory: (loggerConfig: LoggerConfig) => ({
|
|
pinoHttp: {
|
|
autoLogging: true,
|
|
quietReqLogger: true,
|
|
quietResLogger: true,
|
|
level: 'trace',
|
|
useLevel: 'trace',
|
|
mixin() {
|
|
return { context: NestApplication.name };
|
|
},
|
|
customSuccessMessage: (req, res) => { return `${req.method} ${req.url}: ${res.statusCode} request succedeed` },
|
|
customErrorMessage: (req, res) => { return `${req.method} ${req.url}: ${res.statusCode} request errored` },
|
|
name: 'ebitemp-api',
|
|
transport: {
|
|
targets: [
|
|
...(process.env['NODE_ENV'] !== 'production'
|
|
? [
|
|
{
|
|
target: 'pino-pretty',
|
|
level: 'debug',
|
|
options: {
|
|
colorize: true,
|
|
messageFormat: '[{context}] {msg}',
|
|
ignore: 'pid,hostname,context',
|
|
translateTime: 'SYS:yyyy-mm-dd HH:MM:ss o',
|
|
},
|
|
},
|
|
]
|
|
: []),
|
|
{
|
|
target: '@autotelic/pino-seq-transport',
|
|
level: 'trace',
|
|
options: {
|
|
loggerOpts: {
|
|
serverUrl: `${loggerConfig.seqServerHost}:${loggerConfig.seqServerPort}`,
|
|
apiKey: loggerConfig.seqApiKey,
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
}),
|
|
inject: [loggerConfig.KEY],
|
|
}),
|
|
],
|
|
})
|
|
export class AppLoggerModule {}
|