@@ -3,7 +3,7 @@ import { Logger } from "@trigger.dev/core/logger";
33import { sensitiveDataReplacer } from "./sensitiveDataReplacer" ;
44import { AsyncLocalStorage } from "async_hooks" ;
55import { getHttpContext } from "./httpAsyncStorage.server" ;
6- import { captureMessage } from "@sentry/remix" ;
6+ import { captureException , captureMessage } from "@sentry/remix" ;
77
88const currentFieldsStore = new AsyncLocalStorage < Record < string , unknown > > ( ) ;
99
@@ -12,11 +12,40 @@ export function trace<T>(fields: Record<string, unknown>, fn: () => T): T {
1212}
1313
1414Logger . onError = ( message , ...args ) => {
15- captureMessage ( message , {
16- level : "error" ,
17- } ) ;
15+ const error = extractErrorFromArgs ( args ) ;
16+
17+ if ( error ) {
18+ captureException ( error , {
19+ extra : {
20+ message,
21+ ...flattenArgs ( args ) ,
22+ } ,
23+ } ) ;
24+ } else {
25+ captureMessage ( message , {
26+ level : "error" ,
27+ extra : flattenArgs ( args ) ,
28+ } ) ;
29+ }
1830} ;
1931
32+ function extractErrorFromArgs ( args : Array < Record < string , unknown > | undefined > ) {
33+ for ( const arg of args ) {
34+ if ( arg && "error" in arg && arg . error instanceof Error ) {
35+ return arg . error ;
36+ }
37+ }
38+ return ;
39+ }
40+
41+ function flattenArgs ( args : Array < Record < string , unknown > | undefined > ) {
42+ return args . reduce ( ( acc , arg ) => {
43+ if ( arg ) {
44+ return { ...acc , ...arg } ;
45+ }
46+ return acc ;
47+ } , { } ) ;
48+ }
2049export const logger = new Logger (
2150 "webapp" ,
2251 ( process . env . APP_LOG_LEVEL ?? "debug" ) as LogLevel ,
0 commit comments