Logger improvements (#7729)

* Remove enablement

* Refactor context and filtering

* Fix imports, simplify transports config

* Migrate usages of debug context

* Re-org, add colors and grouping to console logging

* Remove temp default context

* Remove manual prefix

* Move colorizing out of console transport body

* Reduce reuse

* Pass through context

* Ensure bitdrift is enabled in dev

* Enable Sentry on web only

* Clean up types

* Docs

* Format

* Update tests

* Clean up tests

* No positional args

* Revert Sentry changes

* Clean up context, use it, pass metadata through to Bitdrift

* Fix up debugging

* Clean up metadata before passing to Bitdrift

* Correct transports

* Reserve context prop on metadata and include in transports

* Update tests
This commit is contained in:
Eric Bailey
2025-02-28 12:09:36 -06:00
committed by GitHub
parent 9e9ffd5c6e
commit 7c36ea1158
27 changed files with 577 additions and 508 deletions
+7 -14
View File
@@ -6,7 +6,7 @@ import {useQueryClient} from '@tanstack/react-query'
import {useAccountSwitcher} from '#/lib/hooks/useAccountSwitcher'
import {NavigationProp} from '#/lib/routes/types'
import {logEvent} from '#/lib/statsig/statsig'
import {logger} from '#/logger'
import {Logger} from '#/logger'
import {isAndroid} from '#/platform/detection'
import {useCurrentConvoId} from '#/state/messages/current-convo-id'
import {RQKEY as RQKEY_NOTIFS} from '#/state/queries/notifications/feed'
@@ -50,6 +50,8 @@ const DEFAULT_HANDLER_OPTIONS = {
let storedPayload: NotificationPayload | undefined
let prevDate = 0
const logger = Logger.create(Logger.Context.Notifications)
export function useNotificationsHandler() {
const queryClient = useQueryClient()
const {currentAccount, accounts} = useSession()
@@ -186,11 +188,7 @@ export function useNotificationsHandler() {
return DEFAULT_HANDLER_OPTIONS
}
logger.debug(
'Notifications: received',
{e},
logger.DebugContext.notifications,
)
logger.debug('Notifications: received', {e})
const payload = e.request.trigger.payload as NotificationPayload
if (
@@ -217,13 +215,9 @@ export function useNotificationsHandler() {
}
prevDate = e.notification.date
logger.debug(
'Notifications: response received',
{
actionIdentifier: e.actionIdentifier,
},
logger.DebugContext.notifications,
)
logger.debug('Notifications: response received', {
actionIdentifier: e.actionIdentifier,
})
if (
e.actionIdentifier === Notifications.DEFAULT_ACTION_IDENTIFIER &&
@@ -235,7 +229,6 @@ export function useNotificationsHandler() {
logger.debug(
'User pressed a notification, opening notifications tab',
{},
logger.DebugContext.notifications,
)
logEvent('notifications:openApp', {})
invalidateCachedUnreadPage()
+7 -9
View File
@@ -4,7 +4,7 @@ import {getBadgeCountAsync, setBadgeCountAsync} from 'expo-notifications'
import {BskyAgent} from '@atproto/api'
import {logEvent} from '#/lib/statsig/statsig'
import {logger} from '#/logger'
import {Logger} from '#/logger'
import {devicePlatform, isAndroid, isNative} from '#/platform/detection'
import {SessionAccount, useAgent, useSession} from '#/state/session'
import BackgroundNotificationHandler from '../../../modules/expo-background-notification-handler'
@@ -14,6 +14,8 @@ const SERVICE_DID = (serviceUrl?: string) =>
? 'did:web:api.staging.bsky.dev'
: 'did:web:api.bsky.app'
const logger = Logger.create(Logger.Context.Notifications)
async function registerPushToken(
agent: BskyAgent,
account: SessionAccount,
@@ -26,14 +28,10 @@ async function registerPushToken(
token: token.data,
appId: 'xyz.blueskyweb.app',
})
logger.debug(
'Notifications: Sent push token (init)',
{
tokenType: token.type,
token: token.data,
},
logger.DebugContext.notifications,
)
logger.debug('Notifications: Sent push token (init)', {
tokenType: token.type,
token: token.data,
})
} catch (error) {
logger.error('Notifications: Failed to set push token', {message: error})
}
-40
View File
@@ -1,40 +0,0 @@
/**
* Importing these separately from `platform/detection` and `lib/app-info` to
* avoid future conflicts and/or circular deps
*/
import {Platform} from 'react-native'
import {nativeApplicationVersion, nativeBuildVersion} from 'expo-application'
import {init} from '@sentry/react-native'
import {IS_TESTFLIGHT} from '#/lib/app-info'
/**
* Examples:
* - `dev`
* - `1.57.0`
*/
const release = nativeApplicationVersion ?? 'dev'
/**
* Examples:
* - `web.dev`
* - `ios.dev`
* - `android.dev`
* - `web.1.57.0`
* - `ios.1.57.0.3`
* - `android.1.57.0.46`
*/
const dist = `${Platform.OS}.${nativeBuildVersion}.${
IS_TESTFLIGHT ? 'tf' : ''
}${__DEV__ ? 'dev' : ''}`
init({
enabled: !__DEV__,
autoSessionTracking: false,
dsn: 'https://05bc3789bf994b81bd7ce20c86ccd3ae@o4505071687041024.ingest.sentry.io/4505071690514432',
debug: false, // If `true`, Sentry will try to print out useful debugging information if something goes wrong with sending the event. Set it to `false` in production
environment: process.env.NODE_ENV,
dist,
release,
})