@tc-libs/logger
v3.9.0
Published
Wrapper NestJS su `winston` con supporto opzionale a notifiche Telegram.
Readme
@tc-libs/logger
Wrapper NestJS su winston con supporto opzionale a notifiche Telegram.
Il package espone un LoggerModule configurabile e una LogFactory che crea logger contestualizzati. Ogni logger scrive sempre su console; se abilitato, inoltra anche messaggi a Telegram.
Registrazione del modulo
Configurazione sincrona
import { LoggerModule } from '@tc-libs/logger';
LoggerModule.register(
{
telegram: {
enabled: true,
chatId: process.env.LOG_TELEGRAM_CHAT_ID!,
apiToken: process.env.LOG_TELEGRAM_BOT_TOKEN!,
},
},
true,
);Configurazione asincrona
LoggerModule.registerAsync(
{
imports: [ConfigModule],
inject: [ConfigService],
useFactory: async (configService: ConfigService) => ({
telegram: {
enabled: configService.get('LOG_TELEGRAM_ENABLED') === 'true',
chatId: configService.getOrThrow<string>('LOG_TELEGRAM_CHAT_ID'),
apiToken: configService.getOrThrow<string>('LOG_TELEGRAM_BOT_TOKEN'),
},
}),
},
true,
);Come si usa
Inietta LogFactory e crea un logger con un contesto leggibile:
import { Injectable } from '@nestjs/common';
import { LogFactory } from '@tc-libs/logger';
@Injectable()
export class UserService {
private readonly logger = this.logFactory.createLogger('UserService');
constructor(private readonly logFactory: LogFactory) {}
run() {
this.logger.log('Start processing');
this.logger.warn('Unexpected condition');
this.logger.error(new Error('Failure'));
}
}API del logger
Il logger creato implementa ITcLogService, che estende LoggerService Nest con metodi aggiuntivi:
logger.log(message);
logger.error(message);
logger.warn(message);
logger.debug(message);
logger.verbose(message);
logger.notifyLog(message);
logger.notifyInfo(message);
logger.notifyWarn(message);
logger.notifyError(message);Differenza pratica:
log,warn,error,debug,verbose: scrivono su consolenotify*: scrivono su console e, se Telegram e abilitato, inviano anche la notifica al bot
Cosa fa internamente
- usa
winstonper il logging console con timestamp, contesto e metadata - serializza oggetti/errori in modo leggibile
- usa un transport custom
TelegramTransportper inviare messaggi HTML tramitetelegraf
Quando usarlo
Usa questo package quando vuoi:
- avere un logger consistente tra piu package Nest
- creare logger per contesto senza configurare
winstonin ogni modulo - ricevere alert operativi su Telegram per errori o eventi importanti
Note operative
- Se
telegram.enabledefalse, il logger continua a funzionare normalmente su console. - Anche con
enabled: true, l'invio Telegram parte solo sechatIde valorizzato. notifyErrore utile per errori operativi da segnalare fuori dai log locali.
Export pubblici
import {
ITcLogService,
LogFactory,
LoggerModule,
} from '@tc-libs/logger';Sviluppo
nx build logger
nx test logger