Colocate bitdrift in logger, use logger for transport (#7859)

* Colocate bitdrift in logger, use logger for transport

* Fix mocks, format

* Ok I guess mocks dir doesn't work
This commit is contained in:
Eric Bailey
2025-02-28 12:09:54 -06:00
committed by GitHub
parent f65866c641
commit 1617eb5d66
9 changed files with 15 additions and 23 deletions
+1 -1
View File
@@ -119,5 +119,5 @@ jest.mock('statsig-react-native-expo', () => ({
}, },
})) }))
jest.mock('../src/lib/bitdrift', () => ({})) jest.mock('../src/logger/bitdrift/lib', () => ({}))
jest.mock('../src/lib/statsig/statsig', () => ({})) jest.mock('../src/lib/statsig/statsig', () => ({}))
+1 -1
View File
@@ -1,6 +1,6 @@
import 'react-native-url-polyfill/auto' import 'react-native-url-polyfill/auto'
import '#/logger/sentry/setup' import '#/logger/sentry/setup'
import '#/lib/bitdrift' // must be near top import '#/logger/bitdrift/setup'
import '#/view/icons' import '#/view/icons'
import React, {useEffect, useState} from 'react' import React, {useEffect, useState} from 'react'
+1 -6
View File
@@ -4,7 +4,6 @@ import {AppState, AppStateStatus} from 'react-native'
import {Statsig, StatsigProvider} from 'statsig-react-native-expo' import {Statsig, StatsigProvider} from 'statsig-react-native-expo'
import {BUNDLE_DATE, BUNDLE_IDENTIFIER, IS_TESTFLIGHT} from '#/lib/app-info' import {BUNDLE_DATE, BUNDLE_IDENTIFIER, IS_TESTFLIGHT} from '#/lib/app-info'
import * as bitdrift from '#/lib/bitdrift'
import {logger} from '#/logger' import {logger} from '#/logger'
import {isWeb} from '#/platform/detection' import {isWeb} from '#/platform/detection'
import * as persisted from '#/state/persisted' import * as persisted from '#/state/persisted'
@@ -102,11 +101,7 @@ export function logEvent<E extends keyof LogEvents>(
if (Statsig.initializeCalled()) { if (Statsig.initializeCalled()) {
Statsig.logEvent(eventName, null, fullMetadata) Statsig.logEvent(eventName, null, fullMetadata)
} }
// Intentionally bypass the logger abstraction to log rich objects. logger.info(eventName, fullMetadata)
console.groupCollapsed(eventName)
console.log(fullMetadata)
console.groupEnd()
bitdrift.info(eventName, fullMetadata)
} catch (e) { } catch (e) {
// A log should never interrupt the calling code, whatever happens. // A log should never interrupt the calling code, whatever happens.
logger.error('Failed to log an event', {message: e}) logger.error('Failed to log an event', {message: e})
+1
View File
@@ -0,0 +1 @@
export {debug, error, info, warn} from '@bitdrift/react-native'
@@ -1,9 +1,7 @@
import {init, SessionStrategy} from '@bitdrift/react-native' import {init, SessionStrategy} from '@bitdrift/react-native'
import {Statsig} from 'statsig-react-native-expo' import {Statsig} from 'statsig-react-native-expo'
import {initPromise} from './statsig/statsig' import {initPromise} from '#/lib/statsig/statsig'
export {debug, error, info, warn} from '@bitdrift/react-native'
const BITDRIFT_API_KEY = process.env.BITDRIFT_API_KEY const BITDRIFT_API_KEY = process.env.BITDRIFT_API_KEY
+4 -1
View File
@@ -6,11 +6,14 @@ import {consoleTransport} from '#/logger/transports/console'
import {sentryTransport} from '#/logger/transports/sentry' import {sentryTransport} from '#/logger/transports/sentry'
import {LogContext, LogLevel, Metadata, Transport} from '#/logger/types' import {LogContext, LogLevel, Metadata, Transport} from '#/logger/types'
import {enabledLogLevels} from '#/logger/util' import {enabledLogLevels} from '#/logger/util'
import {isNative} from '#/platform/detection'
const TRANSPORTS: Transport[] = (function configureTransports() { const TRANSPORTS: Transport[] = (function configureTransports() {
switch (process.env.NODE_ENV) { switch (process.env.NODE_ENV) {
case 'production': { case 'production': {
return [sentryTransport, bitdriftTransport].filter(Boolean) as Transport[] return [sentryTransport, isNative && bitdriftTransport].filter(
Boolean,
) as Transport[]
} }
case 'test': { case 'test': {
return [] return []
+6 -11
View File
@@ -1,18 +1,13 @@
import { import {debug, error, info, warn} from '#/logger/bitdrift/lib'
debug as bdDebug,
error as bdError,
info as bdInfo,
warn as bdWarn,
} from '#/lib/bitdrift'
import {LogLevel, Transport} from '#/logger/types' import {LogLevel, Transport} from '#/logger/types'
import {prepareMetadata} from '#/logger/util' import {prepareMetadata} from '#/logger/util'
const logFunctions = { const logFunctions = {
[LogLevel.Debug]: bdDebug, [LogLevel.Debug]: debug,
[LogLevel.Info]: bdInfo, [LogLevel.Info]: info,
[LogLevel.Log]: bdInfo, [LogLevel.Log]: info,
[LogLevel.Warn]: bdWarn, [LogLevel.Warn]: warn,
[LogLevel.Error]: bdError, [LogLevel.Error]: error,
} as const } as const
export const bitdriftTransport: Transport = ( export const bitdriftTransport: Transport = (