@@ -35,6 +35,7 @@ class SentryHandlerTest {
3535 val configureWithLogManager : Boolean = false ,
3636 val transport : ITransport = mock(),
3737 contextTags : List <String >? = null ,
38+ printfStyle : Boolean? = null ,
3839 ) {
3940 var logger: Logger
4041 var handler: SentryHandler
@@ -49,6 +50,9 @@ class SentryHandlerTest {
4950 handler.setMinimumBreadcrumbLevel(minimumBreadcrumbLevel)
5051 handler.setMinimumEventLevel(minimumEventLevel)
5152 handler.setMinimumLevel(minimumLevel)
53+ if (printfStyle == true ) {
54+ handler.setPrintfStyle(printfStyle)
55+ }
5256 handler.level = Level .ALL
5357 logger.handlers.forEach { logger.removeHandler(it) }
5458 logger.addHandler(handler)
@@ -476,4 +480,79 @@ class SentryHandlerTest {
476480 verify(fixture.transport)
477481 .send(checkLogs { event -> assertEquals(SentryLogLevel .ERROR , event.items.first().level) })
478482 }
483+
484+ @Test
485+ fun `does not set template on log when logging message without parameters` () {
486+ fixture = Fixture (minimumLevel = Level .SEVERE )
487+ fixture.logger.severe(" testing message without parameters" )
488+
489+ Sentry .flush(1000 )
490+
491+ verify(fixture.transport)
492+ .send(
493+ checkLogs { logs ->
494+ val log = logs.items.first()
495+ assertEquals(" testing message without parameters" , log.body)
496+ assertNull(log.attributes?.get(" sentry.message.template" ))
497+ }
498+ )
499+ }
500+
501+ @Test
502+ fun `sets template on log when logging message with parameters` () {
503+ fixture = Fixture (minimumLevel = Level .SEVERE )
504+ fixture.logger.log(Level .SEVERE , " testing message {0}" , arrayOf(" param" ))
505+
506+ Sentry .flush(1000 )
507+
508+ verify(fixture.transport)
509+ .send(
510+ checkLogs { logs ->
511+ val log = logs.items.first()
512+ assertEquals(" testing message param" , log.body)
513+ assertEquals(" testing message {0}" , log.attributes?.get(" sentry.message.template" )?.value)
514+ assertEquals(" param" , log.attributes?.get(" sentry.message.parameter.0" )?.value)
515+ }
516+ )
517+ }
518+
519+ @Test
520+ fun `sets template on log when logging message with parameters and using printfStyle` () {
521+ fixture = Fixture (minimumLevel = Level .SEVERE , printfStyle = true )
522+ fixture.logger.log(Level .SEVERE , " testing message %s" , arrayOf(" param" ))
523+
524+ Sentry .flush(1000 )
525+
526+ verify(fixture.transport)
527+ .send(
528+ checkLogs { logs ->
529+ val log = logs.items.first()
530+ assertEquals(" testing message param" , log.body)
531+ assertEquals(" testing message %s" , log.attributes?.get(" sentry.message.template" )?.value)
532+ assertEquals(" param" , log.attributes?.get(" sentry.message.parameter.0" )?.value)
533+ }
534+ )
535+ }
536+
537+ @Test
538+ fun `sets template on log when logging message with parameters and formatting fails` () {
539+ fixture = Fixture (minimumLevel = Level .SEVERE , printfStyle = true )
540+ fixture.logger.log(Level .SEVERE , " testing message %d %d" , arrayOf(1 ))
541+
542+ Sentry .flush(1000 )
543+
544+ verify(fixture.transport)
545+ .send(
546+ checkLogs { logs ->
547+ val log = logs.items.first()
548+ assertEquals(" testing message %d %d" , log.body)
549+ assertEquals(
550+ " testing message %d %d" ,
551+ log.attributes?.get(" sentry.message.template" )?.value,
552+ )
553+ assertEquals(1 , log.attributes?.get(" sentry.message.parameter.0" )?.value)
554+ assertNull(log.attributes?.get(" sentry.message.parameter.1" ))
555+ }
556+ )
557+ }
479558}
0 commit comments