1- import { addBreadcrumb , captureMessage , defineIntegration , SeverityLevel } from '@sentry/core' ;
2- import { childProcessIntegration as nodeChildProcessIntegration , NodeClient } from '@sentry/node' ;
1+ import {
2+ addBreadcrumb ,
3+ captureMessage ,
4+ defineIntegration ,
5+ Log ,
6+ ParameterizedString ,
7+ SeverityLevel ,
8+ } from '@sentry/core' ;
9+ import { childProcessIntegration as nodeChildProcessIntegration , logger , NodeClient } from '@sentry/node' ;
310import { app } from 'electron' ;
411import { EXIT_REASONS , ExitReason } from '../electron-normalize' ;
512import { ElectronMainOptions } from '../sdk' ;
@@ -22,21 +29,27 @@ const DEFAULT_OPTIONS: ChildProcessOptions = {
2229 events : [ 'abnormal-exit' , 'launch-failed' , 'integrity-failure' ] ,
2330} ;
2431
32+ type LogFn = ( msg : ParameterizedString , attributes : Log [ 'attributes' ] ) => void ;
33+
2534/** Gets message and severity */
26- function getMessageAndSeverity ( reason : ExitReason , proc ?: string ) : { message : string ; level : SeverityLevel } {
27- const message = `'${ proc } ' process exited with '${ reason } '` ;
35+ function getMessageAndSeverity (
36+ reason : ExitReason ,
37+ process : string ,
38+ ) : { message : string ; messageFmt : ParameterizedString ; level : SeverityLevel ; log : LogFn } {
39+ const message = `'${ process } ' process exited with '${ reason } '` ;
40+ const messageFmt = logger . fmt `'${ process } ' process exited with '${ reason } '` ;
2841
2942 switch ( reason ) {
3043 case 'abnormal-exit' :
3144 case 'killed' :
32- return { message, level : 'warning' } ;
45+ return { message, level : 'warning' , log : logger . warn , messageFmt } ;
3346 case 'crashed' :
3447 case 'oom' :
3548 case 'launch-failed' :
3649 case 'integrity-failure' :
37- return { message, level : 'fatal' } ;
50+ return { message, level : 'fatal' , log : logger . error , messageFmt } ;
3851 default :
39- return { message, level : 'debug' } ;
52+ return { message, level : 'debug' , log : logger . info , messageFmt } ;
4053 }
4154}
4255
@@ -70,10 +83,10 @@ export const childProcessIntegration = defineIntegration((userOptions: Partial<O
7083
7184 app . on ( 'child-process-gone' , ( _ , details ) => {
7285 const { reason } = details ;
86+ const { message, level, log, messageFmt } = getMessageAndSeverity ( details . reason , details . type ) ;
7387
7488 // Capture message first
7589 if ( events . includes ( reason ) ) {
76- const { message, level } = getMessageAndSeverity ( details . reason , details . type ) ;
7790 captureMessage ( message , { level, tags : { 'event.process' : details . type } } ) ;
7891 }
7992
@@ -82,19 +95,26 @@ export const childProcessIntegration = defineIntegration((userOptions: Partial<O
8295 addBreadcrumb ( {
8396 type : 'process' ,
8497 category : 'child-process' ,
85- ...getMessageAndSeverity ( details . reason , details . type ) ,
98+ message,
99+ level,
86100 data : details ,
87101 } ) ;
102+
103+ log ( messageFmt , {
104+ exitCode : details . exitCode ,
105+ name : details . name ,
106+ serviceName : details . serviceName ,
107+ } ) ;
88108 }
89109 } ) ;
90110
91111 app . on ( 'render-process-gone' , ( _ , contents , details ) => {
92112 const { reason } = details ;
93113 const name = clientOptions ?. getRendererName ?.( contents ) || 'renderer' ;
114+ const { message, level, log, messageFmt } = getMessageAndSeverity ( details . reason , name ) ;
94115
95116 // Capture message first
96117 if ( events . includes ( reason ) ) {
97- const { message, level } = getMessageAndSeverity ( details . reason , name ) ;
98118 captureMessage ( message , level ) ;
99119 }
100120
@@ -103,9 +123,14 @@ export const childProcessIntegration = defineIntegration((userOptions: Partial<O
103123 addBreadcrumb ( {
104124 type : 'process' ,
105125 category : 'child-process' ,
106- ...getMessageAndSeverity ( details . reason , name ) ,
126+ message,
127+ level,
107128 data : details ,
108129 } ) ;
130+
131+ log ( messageFmt , {
132+ exitCode : details . exitCode ,
133+ } ) ;
109134 }
110135 } ) ;
111136 }
0 commit comments