@@ -14,11 +14,12 @@ let GLOBAL_LOG_BUFFER: Log[] = [];
1414let isFlushingLogs = false ;
1515
1616const 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 ,
2223} ;
2324
2425/**
@@ -106,12 +107,36 @@ function addToLogBuffer(client: Client, log: Log, scope: Scope): void {
106107}
107108
108109/**
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.
110111 *
111112 * The first parameter is bound with, e.g., const info = captureLog.bind(null, 'info')
112113 * The other parameters are in the format to be passed a tagged template, Sentry.info`hello ${world}`
113114 */
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 {
115140 const client = getClient ( ) ;
116141
117142 if ( ! client ) {
@@ -124,53 +149,37 @@ export function captureLog(level: LogSeverityLevel, messages: string[] | string,
124149 return ;
125150 }
126151
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-
140152 const { release, environment } = client . getOptions ( ) ;
141153
154+ const logAttributes = {
155+ ...customAttributes ,
156+ } ;
157+
142158 if ( release ) {
143- attributes . push ( {
144- key : 'sentry.release' ,
145- value : {
146- stringValue : release ,
147- } ,
148- } ) ;
159+ logAttributes [ 'sentry.release' ] = release ;
149160 }
150161
151162 if ( environment ) {
152- attributes . push ( {
153- key : 'sentry.environment' ,
154- value : {
155- stringValue : environment ,
156- } ,
157- } ) ;
163+ logAttributes [ 'sentry.environment' ] = environment ;
158164 }
159165
160166 const scope = getCurrentScope ( ) ;
161167
168+ const attributes = Object . entries ( logAttributes ) . map < LogAttribute > ( ( [ key , value ] ) => valueToAttribute ( key , value ) ) ;
169+
162170 const log : Log = {
163171 severityText : level ,
164172 body : {
165173 stringValue : message ,
166174 } ,
167- attributes : attributes ,
175+ attributes,
168176 timeUnixNano : `${ new Date ( ) . getTime ( ) . toString ( ) } 000000` ,
169177 traceId : scope . getPropagationContext ( ) . traceId ,
178+ severityNumber,
170179 } ;
171180
172181 const maybeSeverityNumber = SEVERITY_TEXT_TO_SEVERITY_NUMBER [ level ] ;
173- if ( maybeSeverityNumber !== undefined ) {
182+ if ( maybeSeverityNumber !== undefined && log . severityNumber === undefined ) {
174183 log . severityNumber = maybeSeverityNumber ;
175184 }
176185
0 commit comments