|
| 1 | + |
| 2 | +import winston from "winston"; |
| 3 | +import { Logtail } from '@logtail/node'; |
| 4 | +import { LogtailTransport } from "@logtail/winston"; |
| 5 | + |
| 6 | +const log = process.env.LOGTAIL_TOKEN; |
| 7 | +let logtail!: Logtail; |
| 8 | +if (log) { |
| 9 | + logtail = new Logtail(log, { |
| 10 | + endpoint: process.env.LOGTAIL_URI, |
| 11 | + }); |
| 12 | +} |
| 13 | + |
| 14 | +logtail.info('teste'); |
| 15 | + |
| 16 | +/** Criando a instância base com formatação */ |
| 17 | +const baseLogger = winston.createLogger({ |
| 18 | + level: 'debug', |
| 19 | + format: winston.format.combine( |
| 20 | + winston.format.timestamp(), |
| 21 | + winston.format.printf(({ level, message, timestamp, ...rest }) => { |
| 22 | + const meta = Object.keys(rest).length ? JSON.stringify(rest) : ''; |
| 23 | + return `[${timestamp}] ${level.toUpperCase()}: ${message} ${meta}`; |
| 24 | + }) |
| 25 | + ), |
| 26 | + transports: [new LogtailTransport(logtail)], |
| 27 | +}); |
| 28 | + |
| 29 | +/** Métodos personalizados */ |
| 30 | +const logger = { |
| 31 | + info: (msg:string, meta = {}) => baseLogger.info(msg, meta), |
| 32 | + warn: (msg:string, meta = {}) => baseLogger.warn(msg, meta), |
| 33 | + error: (msg:string, meta = {}) => baseLogger.error(msg, meta), |
| 34 | + debug: (msg:string, meta = {}) => baseLogger.debug(msg, meta), |
| 35 | + alert: (msg:string, meta = {}) => baseLogger.log('alert', msg, meta), // nível customizado (precisa configurar abaixo) |
| 36 | +}; |
| 37 | + |
| 38 | +// Adicionando nível "alert" (opcional) |
| 39 | +baseLogger.levels['alert'] = 0; |
| 40 | +baseLogger.add(new winston.transports.Console()); // Adiciona log no console também, se quiser |
| 41 | + |
| 42 | +export default logger; |
0 commit comments