This's a log4js module for Nest@6.
$ npm install nestjs-log4js
Logger is a global module in general, so I just list global usage.
If you want to Manual logger, see provider bottom, inject and log.
app.module.ts
import { Log4jsModule } from 'nestjs-log4js';
@Module({
imports: [
...
Log4jsModule.forRoot(config),
]
})
export class AppModule {
}
@Module({
imports: [
ConfigModule.load(path.resolve(__dirname, '..', 'config', '*.{ts,js}')),
Log4jsModule.forRootAsync({
useFactory: (config: ConfigService) => config.get('log'),
inject: [ConfigService],
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Optional Settings is inspired by official settings
If you use Interceptor, you should ensure 'response' and 'request' in your config categories.
If you use Filter, you should ensure 'error' in your config categories.
Interceptor is provided for logging request and response, you can also implement your Interceptor by extend.
app.module.ts
import { Log4jsInterceptor } from 'nest-log4js';
@Module({
providers: [{
provide: 'LOG4JS_INTERCEPTOR',
useClass: Log4jsInterceptor,
}],
})
export class AppModule {
}
main.ts
import { Log4jsService } from 'nest-log4js';
async function bootstrap() {
const app = await NestFactory.create(AppModule, {
logger: false,
});
app.useLogger(app.get(Log4jsService));
await app.listen(3000);
}
Filter is provided for logging error, you can also implement your Filter by extend.
main.ts
import { Log4jsFilter } from 'nest-log4js';
async function bootstrap() {
const app = await NestFactory.create(AppModule, {
logger: false,
});
app.useGlobalFilters(app.get(Log4jsFilter));
await app.listen(3000);
}
LOG4JS_CONFIG: your config
LOG4JS_PROVIDER: configure(config): Logger
LOG4JS_REQUEST_LOGGER
LOG4JS_RESPONSE_LOGGER
LOG4JS_ERROR_LOGGER
If you use pm2, please look clustering