Fix imports, simplify transports config

This commit is contained in:
Eric Bailey
2025-02-11 12:31:44 -06:00
parent 5df4ded61e
commit 9f7a4166aa
4 changed files with 24 additions and 29 deletions
+3
View File
@@ -8,6 +8,7 @@ test('works', () => {
{ {
id: '1', id: '1',
level: LogLevel.Debug, level: LogLevel.Debug,
context: 'convo',
message: 'hello', message: 'hello',
metadata: {}, metadata: {},
timestamp: Date.now(), timestamp: Date.now(),
@@ -15,6 +16,7 @@ test('works', () => {
{ {
id: '2', id: '2',
level: LogLevel.Debug, level: LogLevel.Debug,
context: 'convo',
message: 'hello', message: 'hello',
metadata: {}, metadata: {},
timestamp: Date.now(), timestamp: Date.now(),
@@ -22,6 +24,7 @@ test('works', () => {
{ {
id: '3', id: '3',
level: LogLevel.Debug, level: LogLevel.Debug,
context: 'convo',
message: 'hello', message: 'hello',
metadata: {}, metadata: {},
timestamp: Date.now(), timestamp: Date.now(),
+2 -1
View File
@@ -15,7 +15,8 @@ export function createBitdriftTransport(): Transport {
[LogLevel.Error]: bdError, [LogLevel.Error]: bdError,
} as const } as const
return (level, message) => { // TODO
return (level, _context, message) => {
const log = logFunctions[level] const log = logFunctions[level]
log('' + message) log('' + message)
} }
+18 -27
View File
@@ -134,6 +134,20 @@ export const sentryTransport: Transport = (
} }
} }
const transports: Transport[] = (function configureTransports() {
switch (process.env.NODE_ENV) {
case 'production': {
return [sentryTransport, createBitdriftTransport()]
}
case 'test': {
return []
}
default: {
return [consoleTransport]
}
}
})()
const queuedMessages: [string, Parameters<typeof Sentry.captureMessage>[1]][] = const queuedMessages: [string, Parameters<typeof Sentry.captureMessage>[1]][] =
[] []
let sentrySendTimeout: ReturnType<typeof setTimeout> | null = null let sentrySendTimeout: ReturnType<typeof setTimeout> | null = null
@@ -161,13 +175,12 @@ function sendQueuedMessages() {
} }
export class Logger { export class Logger {
Level = LogLevel static Level = LogLevel
Context = LogContext static Context = LogContext
level: LogLevel level: LogLevel
context: keyof typeof LogContext | undefined = undefined context: keyof typeof LogContext | undefined = undefined
contextFilter: string = '' contextFilter: string = ''
transports: Transport[] = []
protected debugContextRegexes: RegExp[] = [] protected debugContextRegexes: RegExp[] = []
@@ -218,19 +231,13 @@ export class Logger {
this.transport(LogLevel.Error, error, metadata) this.transport(LogLevel.Error, error, metadata)
} }
addTransport(transport: Transport) {
this.transports.push(transport)
return () => {
this.transports.splice(this.transports.indexOf(transport), 1)
}
}
protected transport( protected transport(
level: LogLevel, level: LogLevel,
message: string | Error, message: string | Error,
metadata: Metadata = {}, metadata: Metadata = {},
) { ) {
if ( if (
!!this.contextFilter &&
!!this.context && !!this.context &&
!this.debugContextRegexes.find(reg => reg.test(this.context!)) !this.debugContextRegexes.find(reg => reg.test(this.context!))
) )
@@ -251,7 +258,7 @@ export class Logger {
if (!enabledLogLevels[this.level].includes(level)) return if (!enabledLogLevels[this.level].includes(level)) return
for (const transport of this.transports) { for (const transport of transports) {
transport(level, this.context, message, meta, timestamp) transport(level, this.context, message, meta, timestamp)
} }
} }
@@ -270,19 +277,3 @@ export class Logger {
* `logger.enable()` * `logger.enable()`
*/ */
export const logger = new Logger() export const logger = new Logger()
if (process.env.NODE_ENV !== 'test') {
logger.addTransport(createBitdriftTransport())
}
if (process.env.NODE_ENV !== 'test') {
if (__DEV__) {
logger.addTransport(consoleTransport)
/*
* Comment this out to enable Sentry transport in dev
*/
// logger.addTransport(sentryTransport)
} else {
logger.addTransport(sentryTransport)
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
import {LogContext} from '#/logger/debugContext' import {LogContext} from '#/logger/logContext'
import type {Sentry} from '#/logger/sentry' import type {Sentry} from '#/logger/sentry'
export enum LogLevel { export enum LogLevel {