@@ -29,6 +29,7 @@ import org.apache.logging.log4j.core.LoggerContext
2929import org.apache.logging.log4j.core.config.AppenderRef
3030import org.apache.logging.log4j.core.config.Configuration
3131import org.apache.logging.log4j.core.config.LoggerConfig
32+ import org.apache.logging.log4j.core.layout.PatternLayout
3233import org.apache.logging.log4j.spi.ExtendedLogger
3334import org.mockito.kotlin.any
3435import org.mockito.kotlin.anyOrNull
@@ -60,6 +61,7 @@ class SentryAppenderTest {
6061 }
6162 loggerContext.start()
6263 val config: Configuration = loggerContext.configuration
64+
6365 val appender =
6466 SentryAppender (
6567 " sentry" ,
@@ -533,4 +535,59 @@ class SentryAppenderTest {
533535 fixture.getSut(debug = true )
534536 assertTrue(ScopesAdapter .getInstance().options.isDebug)
535537 }
538+
539+ @Test
540+ fun `does not set template on log when logging message without parameters` () {
541+ val logger = fixture.getSut(minimumLevel = Level .ERROR )
542+ logger.error(" testing message without parameters" )
543+
544+ Sentry .flush(1000 )
545+
546+ verify(fixture.transport)
547+ .send(
548+ checkLogs { logs ->
549+ val log = logs.items.first()
550+ assertEquals(" testing message without parameters" , log.body)
551+ assertNull(log.attributes?.get(" sentry.message.template" ))
552+ }
553+ )
554+ }
555+
556+ @Test
557+ fun `sets template on log when logging message with parameters` () {
558+ val logger = fixture.getSut(minimumLevel = Level .ERROR )
559+ logger.error(" testing message {}" , " param" )
560+
561+ Sentry .flush(1000 )
562+
563+ verify(fixture.transport)
564+ .send(
565+ checkLogs { logs ->
566+ val log = logs.items.first()
567+ assertEquals(" testing message param" , log.body)
568+ assertEquals(" testing message {}" , log.attributes?.get(" sentry.message.template" )?.value)
569+ assertEquals(" param" , log.attributes?.get(" sentry.message.parameter.0" )?.value)
570+ }
571+ )
572+ }
573+
574+ @Test
575+ fun `sets template on log when logging message with parameters and number of parameters is wrong` () {
576+ val logger = fixture.getSut(minimumLevel = Level .ERROR )
577+ logger.error(" testing message {} {} {}" , " param1" , " param2" )
578+
579+ Sentry .flush(1000 )
580+
581+ verify(fixture.transport)
582+ .send(
583+ checkLogs { logs ->
584+ val log = logs.items.first()
585+ assertEquals(" testing message param1 param2 {}" , log.body)
586+ assertEquals(" testing message {} {} {}" , log.attributes?.get(" sentry.message.template" )?.value)
587+ assertEquals(" param1" , log.attributes?.get(" sentry.message.parameter.0" )?.value)
588+ assertEquals(" param2" , log.attributes?.get(" sentry.message.parameter.1" )?.value)
589+ assertNull(log.attributes?.get(" sentry.message.parameter.2" ))
590+ }
591+ )
592+ }
536593}
0 commit comments