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