@@ -14,11 +14,12 @@ let GLOBAL_LOG_BUFFER: Log[] = [];
14
14
let isFlushingLogs = false ;
15
15
16
16
const SEVERITY_TEXT_TO_SEVERITY_NUMBER : Partial < Record < LogSeverityLevel , number > > = {
17
- debug : 10 ,
18
- info : 20 ,
19
- warning : 30 ,
20
- error : 40 ,
21
- critical : 50 ,
17
+ trace : 1 ,
18
+ debug : 5 ,
19
+ info : 9 ,
20
+ warn : 13 ,
21
+ error : 17 ,
22
+ fatal : 21 ,
22
23
} ;
23
24
24
25
/**
@@ -106,12 +107,36 @@ function addToLogBuffer(client: Client, log: Log, scope: Scope): void {
106
107
}
107
108
108
109
/**
109
- * A utility function to be able to create methods like Sentry.info`...`
110
+ * A utility function to be able to create methods like Sentry.info`...` that use tagged template functions.
110
111
*
111
112
* The first parameter is bound with, e.g., const info = captureLog.bind(null, 'info')
112
113
* The other parameters are in the format to be passed a tagged template, Sentry.info`hello ${world}`
113
114
*/
114
- export function captureLog ( level : LogSeverityLevel , messages : string [ ] | string , ...values : unknown [ ] ) : void {
115
+ export function sendLog ( level : LogSeverityLevel , messageArr : TemplateStringsArray , ...values : unknown [ ] ) : void {
116
+ const message = messageArr . reduce ( ( acc , str , i ) => acc + str + ( values [ i ] ?? '' ) , '' ) ;
117
+
118
+ const attributes = values . reduce < Record < string , unknown > > (
119
+ ( acc , value , index ) => {
120
+ acc [ `param${ index } ` ] = value ;
121
+ return acc ;
122
+ } ,
123
+ {
124
+ 'sentry.template' : messageArr . map ( ( s , i ) => s + ( i < messageArr . length - 1 ? `$param${ i } ` : '' ) ) . join ( '' ) ,
125
+ } ,
126
+ ) ;
127
+
128
+ captureLog ( level , message , attributes ) ;
129
+ }
130
+
131
+ /**
132
+ * Sends a log to Sentry.
133
+ */
134
+ export function captureLog (
135
+ level : LogSeverityLevel ,
136
+ message : string ,
137
+ customAttributes : Record < string , unknown > = { } ,
138
+ severityNumber ?: number ,
139
+ ) : void {
115
140
const client = getClient ( ) ;
116
141
117
142
if ( ! client ) {
@@ -124,53 +149,37 @@ export function captureLog(level: LogSeverityLevel, messages: string[] | string,
124
149
return ;
125
150
}
126
151
127
- const message = Array . isArray ( messages )
128
- ? messages . reduce ( ( acc , str , i ) => acc + str + ( values [ i ] ?? '' ) , '' )
129
- : messages ;
130
- const attributes = values . map < LogAttribute > ( ( value , index ) => valueToAttribute ( `param${ index } ` , value ) ) ;
131
- if ( Array . isArray ( messages ) ) {
132
- attributes . push ( {
133
- key : 'sentry.template' ,
134
- value : {
135
- stringValue : messages . map ( ( s , i ) => s + ( i < messages . length - 1 ? `$param${ i } ` : '' ) ) . join ( '' ) ,
136
- } ,
137
- } ) ;
138
- }
139
-
140
152
const { release, environment } = client . getOptions ( ) ;
141
153
154
+ const logAttributes = {
155
+ ...customAttributes ,
156
+ } ;
157
+
142
158
if ( release ) {
143
- attributes . push ( {
144
- key : 'sentry.release' ,
145
- value : {
146
- stringValue : release ,
147
- } ,
148
- } ) ;
159
+ logAttributes [ 'sentry.release' ] = release ;
149
160
}
150
161
151
162
if ( environment ) {
152
- attributes . push ( {
153
- key : 'sentry.environment' ,
154
- value : {
155
- stringValue : environment ,
156
- } ,
157
- } ) ;
163
+ logAttributes [ 'sentry.environment' ] = environment ;
158
164
}
159
165
160
166
const scope = getCurrentScope ( ) ;
161
167
168
+ const attributes = Object . entries ( logAttributes ) . map < LogAttribute > ( ( [ key , value ] ) => valueToAttribute ( key , value ) ) ;
169
+
162
170
const log : Log = {
163
171
severityText : level ,
164
172
body : {
165
173
stringValue : message ,
166
174
} ,
167
- attributes : attributes ,
175
+ attributes,
168
176
timeUnixNano : `${ new Date ( ) . getTime ( ) . toString ( ) } 000000` ,
169
177
traceId : scope . getPropagationContext ( ) . traceId ,
178
+ severityNumber,
170
179
} ;
171
180
172
181
const maybeSeverityNumber = SEVERITY_TEXT_TO_SEVERITY_NUMBER [ level ] ;
173
- if ( maybeSeverityNumber !== undefined ) {
182
+ if ( maybeSeverityNumber !== undefined && log . severityNumber === undefined ) {
174
183
log . severityNumber = maybeSeverityNumber ;
175
184
}
176
185
0 commit comments