Reserve context prop on metadata and include in transports
This commit is contained in:
@@ -271,7 +271,7 @@ function SaveButtonInner({
|
|||||||
}
|
}
|
||||||
Toast.show(_(msg`Feeds updated!`))
|
Toast.show(_(msg`Feeds updated!`))
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
logger.error(err, {context: `FeedCard: failed to update feeds`, pin})
|
logger.error(err, {message: `FeedCard: failed to update feeds`, pin})
|
||||||
Toast.show(_(msg`Failed to update feeds`), 'xmark')
|
Toast.show(_(msg`Failed to update feeds`), 'xmark')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ export function PostInteractionSettingsDialogControlledInner(
|
|||||||
props.control.close()
|
props.control.close()
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(`Failed to save post interaction settings`, {
|
logger.error(`Failed to save post interaction settings`, {
|
||||||
context: 'PostInteractionSettingsDialogControlledInner',
|
source: 'PostInteractionSettingsDialogControlledInner',
|
||||||
safeMessage: e.message,
|
safeMessage: e.message,
|
||||||
})
|
})
|
||||||
Toast.show(
|
Toast.show(
|
||||||
|
|||||||
@@ -22,5 +22,9 @@ export const bitdriftTransport: Transport = (
|
|||||||
metadata,
|
metadata,
|
||||||
) => {
|
) => {
|
||||||
const log = logFunctions[level]
|
const log = logFunctions[level]
|
||||||
log(`(${context}) ${message}`, prepareMetadata(metadata))
|
log(message.toString(), {
|
||||||
|
// match Sentry payload
|
||||||
|
context,
|
||||||
|
...prepareMetadata(metadata),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,17 @@ export const sentryTransport: Transport = (
|
|||||||
{type, tags, ...metadata},
|
{type, tags, ...metadata},
|
||||||
timestamp,
|
timestamp,
|
||||||
) => {
|
) => {
|
||||||
const meta = prepareMetadata(metadata)
|
const meta = {
|
||||||
|
// match Bitdrift payload
|
||||||
|
context,
|
||||||
|
...prepareMetadata(metadata),
|
||||||
|
}
|
||||||
|
let _tags = tags || {}
|
||||||
|
_tags = {
|
||||||
|
// use `category` to match breadcrumbs
|
||||||
|
category: context,
|
||||||
|
...tags,
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If a string, report a breadcrumb
|
* If a string, report a breadcrumb
|
||||||
@@ -46,9 +56,9 @@ export const sentryTransport: Transport = (
|
|||||||
*/
|
*/
|
||||||
if (level === 'error' || level === 'warn' || level === 'log') {
|
if (level === 'error' || level === 'warn' || level === 'log') {
|
||||||
// Defer non-critical messages so they're sent in a batch
|
// Defer non-critical messages so they're sent in a batch
|
||||||
queueMessageForSentry(`(${context}) message`, {
|
queueMessageForSentry(message, {
|
||||||
level: severity,
|
level: severity,
|
||||||
tags,
|
tags: _tags,
|
||||||
extra: meta,
|
extra: meta,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -57,7 +67,7 @@ export const sentryTransport: Transport = (
|
|||||||
* It's otherwise an Error and should be reported with captureException
|
* It's otherwise an Error and should be reported with captureException
|
||||||
*/
|
*/
|
||||||
Sentry.captureException(message, {
|
Sentry.captureException(message, {
|
||||||
tags,
|
tags: _tags,
|
||||||
extra: meta,
|
extra: meta,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,11 @@ export type Transport = (
|
|||||||
* `captureException` parameter, `CaptureContext`.
|
* `captureException` parameter, `CaptureContext`.
|
||||||
*/
|
*/
|
||||||
export type Metadata = {
|
export type Metadata = {
|
||||||
|
/**
|
||||||
|
* Reserved for appending `LogContext` to logging payloads
|
||||||
|
*/
|
||||||
|
context?: undefined
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Applied as Sentry breadcrumb types. Defaults to `default`.
|
* Applied as Sentry breadcrumb types. Defaults to `default`.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ export function Deactivated() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
logger.error(e, {
|
logger.error(e, {
|
||||||
context: 'Failed to activate account',
|
message: 'Failed to activate account',
|
||||||
})
|
})
|
||||||
} finally {
|
} finally {
|
||||||
setPending(false)
|
setPending(false)
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ function Inner({preferences}: {preferences: UsePreferencesQueryResponse}) {
|
|||||||
Toast.show(_(msg`Settings saved`))
|
Toast.show(_(msg`Settings saved`))
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(`Failed to save post interaction settings`, {
|
logger.error(`Failed to save post interaction settings`, {
|
||||||
context: 'ModerationInteractionSettingsScreen',
|
source: 'ModerationInteractionSettingsScreen',
|
||||||
safeMessage: e.message,
|
safeMessage: e.message,
|
||||||
})
|
})
|
||||||
setError(_(msg`Failed to save settings. Please try again.`))
|
setError(_(msg`Failed to save settings. Please try again.`))
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ function DeactivateAccountDialogInner({
|
|||||||
}
|
}
|
||||||
|
|
||||||
logger.error(e, {
|
logger.error(e, {
|
||||||
context: 'Failed to deactivate account',
|
message: 'Failed to deactivate account',
|
||||||
})
|
})
|
||||||
} finally {
|
} finally {
|
||||||
setPending(false)
|
setPending(false)
|
||||||
|
|||||||
@@ -469,7 +469,7 @@ export class Convo {
|
|||||||
this.dispatch({event: ConvoDispatchEvent.Ready})
|
this.dispatch({event: ConvoDispatchEvent.Ready})
|
||||||
}
|
}
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(e, {context: 'Convo: setup failed'})
|
logger.error(e, {message: 'Convo: setup failed'})
|
||||||
|
|
||||||
this.dispatch({
|
this.dispatch({
|
||||||
event: ConvoDispatchEvent.Error,
|
event: ConvoDispatchEvent.Error,
|
||||||
@@ -574,7 +574,7 @@ export class Convo {
|
|||||||
this.sender = sender || this.sender
|
this.sender = sender || this.sender
|
||||||
this.recipients = recipients || this.recipients
|
this.recipients = recipients || this.recipients
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(e, {context: `Convo: failed to refresh convo`})
|
logger.error(e, {message: `Convo: failed to refresh convo`})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -834,7 +834,7 @@ export class Convo {
|
|||||||
// continue queue processing
|
// continue queue processing
|
||||||
await this.processPendingMessages()
|
await this.processPendingMessages()
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(e, {context: `Convo: failed to send message`})
|
logger.error(e, {message: `Convo: failed to send message`})
|
||||||
this.handleSendMessageFailure(e)
|
this.handleSendMessageFailure(e)
|
||||||
this.isProcessingPendingMessages = false
|
this.isProcessingPendingMessages = false
|
||||||
}
|
}
|
||||||
@@ -880,7 +880,7 @@ export class Convo {
|
|||||||
} else {
|
} else {
|
||||||
this.pendingMessageFailure = 'unrecoverable'
|
this.pendingMessageFailure = 'unrecoverable'
|
||||||
logger.error(e, {
|
logger.error(e, {
|
||||||
context: `Convo handleSendMessageFailure received unknown error`,
|
message: `Convo handleSendMessageFailure received unknown error`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -935,7 +935,7 @@ export class Convo {
|
|||||||
{},
|
{},
|
||||||
)
|
)
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(e, {context: `Convo: failed to batch retry messages`})
|
logger.error(e, {message: `Convo: failed to batch retry messages`})
|
||||||
this.handleSendMessageFailure(e)
|
this.handleSendMessageFailure(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -957,7 +957,7 @@ export class Convo {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(e, {context: `Convo: failed to delete message`})
|
logger.error(e, {message: `Convo: failed to delete message`})
|
||||||
this.deletedMessages.delete(messageId)
|
this.deletedMessages.delete(messageId)
|
||||||
this.commit()
|
this.commit()
|
||||||
throw e
|
throw e
|
||||||
|
|||||||
@@ -255,7 +255,7 @@ export class MessagesEventBus {
|
|||||||
this.dispatch({event: MessagesEventBusDispatchEvent.Ready})
|
this.dispatch({event: MessagesEventBusDispatchEvent.Ready})
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(e, {
|
logger.error(e, {
|
||||||
context: `${LOGGER_CONTEXT}: init failed`,
|
message: `${LOGGER_CONTEXT}: init failed`,
|
||||||
})
|
})
|
||||||
|
|
||||||
this.dispatch({
|
this.dispatch({
|
||||||
@@ -368,12 +368,12 @@ export class MessagesEventBus {
|
|||||||
this.emitter.emit('event', {type: 'logs', logs: batch})
|
this.emitter.emit('event', {type: 'logs', logs: batch})
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(e, {
|
logger.error(e, {
|
||||||
context: `${LOGGER_CONTEXT}: process latest events`,
|
message: `${LOGGER_CONTEXT}: process latest events`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(e, {context: `${LOGGER_CONTEXT}: poll events failed`})
|
logger.error(e, {message: `${LOGGER_CONTEXT}: poll events failed`})
|
||||||
|
|
||||||
this.dispatch({
|
this.dispatch({
|
||||||
event: MessagesEventBusDispatchEvent.Error,
|
event: MessagesEventBusDispatchEvent.Error,
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ export async function createAgentAndCreateAccount(
|
|||||||
})
|
})
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(e, {
|
logger.error(e, {
|
||||||
context: `session: createAgentAndCreateAccount failed to save personal details and feeds`,
|
message: `session: createAgentAndCreateAccount failed to save personal details and feeds`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -177,7 +177,7 @@ export async function createAgentAndCreateAccount(
|
|||||||
// snooze first prompt after signup, defer to next prompt
|
// snooze first prompt after signup, defer to next prompt
|
||||||
snoozeEmailConfirmationPrompt()
|
snoozeEmailConfirmationPrompt()
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(e, {context: `session: failed snoozeEmailConfirmationPrompt`})
|
logger.error(e, {message: `session: failed snoozeEmailConfirmationPrompt`})
|
||||||
}
|
}
|
||||||
|
|
||||||
return agent.prepare(gates, moderation, onSessionChange)
|
return agent.prepare(gates, moderation, onSessionChange)
|
||||||
|
|||||||
Reference in New Issue
Block a user