This repository has been archived on 2025-03-21. You can view files and clone it, but cannot push or open issues or pull requests.
insiemesalute-3p-nx/apps/ebitemp-api/src/app/modules/logger/logger.module.ts

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 {}