import Rollbar from 'rollbar' import Transport from 'winston-transport' import { RollbarTransportOptions } from './types' class RollbarTransport extends Transport { private rollbar: Rollbar constructor(options: RollbarTransportOptions = {}) { super({ level: options.level, format: options.format }) this.rollbar = new Rollbar({ accessToken: process.env.POST_SERVER_ITEM_ACCESS_TOKEN, captureUncaught: true, captureUnhandledRejections: true, payload: { circleJob: process.env.CIRCLE_JOB, siteId: process.env.SITE_ID, releaseVersion: process.env.RELEASE_VERSION, environment: process.env.DEPLOY_ENV, }, }) } // eslint-disable-next-line @typescript-eslint/no-explicit-any log(log: any, callback: () => void) { setImmediate(() => { this.emit('logged', log) }) if (log.level === 'error') { this.rollbar.error(log, callback) return } callback() } } export { RollbarTransport }