@byndyusoft/nest-logger
v1.0.0
Published
Logger factory for pino with module logger for NestJs
Readme
nest-logger
Logger factory for pino with module logger for NestJs
Requirements
- Node.js v20 LTS or later
- npm or yarn
Install
npm install @byndyusoft/nest-logger @byndyusoft/nest-dynamic-moduleor
yarn add @byndyusoft/nest-logger @byndyusoft/nest-dynamic-moduleEnvironment
You must initialize process.env before creating pino logger:
process.env.npm_package_name;
process.env.npm_package_version;
process.env.CONFIG_ENV ?? process.env.NODE_ENV;
process.env["BUILD_*"];Usage
Ready-to-use module
Register instance Logger and LoggerErrorInterceptor
import { Logger, LoggerErrorInterceptor } from "@byndyusoft/nest-logger";
const logger = app.get(Logger);
app.useLogger(logger);
app.useGlobalInterceptors(new LoggerErrorInterceptor());Register module LoggerModule
import { LoggerModule, LogLevel, Disable } from "@byndyusoft/nest-logger";
@Module({
imports: [
LoggerModule.forRoot({
base: {
configEnv: "local",
name: "root",
version: "0.0.0-development",
},
level: LogLevel.info,
pretty: true,
disable: [Disable.messageTemplateHash],
}),
],
})
export class AppModule {}Or async register module LoggerModule
import { LoggerModule } from "@byndyusoft/nest-logger";
import { ConfigDto } from "./config";
import { PackageJsonDto } from "./packageJson";
@Module({
imports: [
LoggerModule.forRootAsync({
inject: [ConfigDto, PackageJsonDto],
useFactory: (configDto: ConfigDto, packageJson: PackageJsonDto) => ({
base: {
configEnv: configDto.configEnv,
name: packageJson.name,
version: packageJson.version,
},
level: configDto.logger.level,
pretty: configDto.logger.pretty,
disable: [Disable.messageTemplateHash]
})
}),
],
})Custom use
Create custom module
import {
PinoHttpLoggerOptionsBuilder,
PinoLoggerFactory,
} from "@byndyusoft/nest-logger";
import { Module } from "@nestjs/common";
import { LoggerModule } from "nestjs-pino";
@Module({
imports: [
LoggerModule.forRootAsync({
useFactory: () => ({
pinoHttp: new PinoHttpLoggerOptionsBuilder()
.withLogger(new PinoLoggerFactory().create())
.build(),
}),
}),
],
})
export class InfrastructureModule {}Usage custom serializers
Configure modules
import {
PinoHttpLoggerOptionsBuilder,
PinoLoggerFactory,
debugObjectSerializer,
jsonDebugObjectSerializer,
} from "@byndyusoft/nest-logger";
import { Module } from "@nestjs/common";
import { LoggerModule } from "nestjs-pino";
@Module({
imports: [
LoggerModule.forRootAsync({
useFactory: () => ({
pinoHttp: new PinoHttpLoggerOptionsBuilder()
.withLogger(new PinoLoggerFactory().create())
.withSerializers({
// you can use any name for key
debugData: debugObjectSerializer,
debugJsonData: jsonDebugObjectSerializer,
})
.build(),
}),
}),
],
})
export class InfrastructureModule {}logger.info({
msg: "some message",
// the object whose fields you want to serialize to human-readable string representation
debugData: {
entity: {
id: 1,
orders: [1, 2],
},
},
// the object whose fields you want to serialize to JSON string representation
debugJsonData: {
entity: {
id: 1,
orders: [1, 2],
},
},
});Maintainers
License
This repository is released under version 2.0 of the Apache License.
