SLF4J ILoggingEvent has two important fields / getter methods:
message - contains the message template (e.g. "Hello {}!")
formattedMessage - contains the final formatted/merged log message (e.g. "Hello world!")
This distinction is useful -- for example, we use this to aggregate log messages.
Issue
KLogger relies on Kotlin string interpolation and as a result, the message field contains the same formatted message as formattedMessage, breaking the possibilities for aggregation.
Proposal
Introduce a new field in KLoggingEventBuilder that could contain the log message template (e.g. "Hello $variable!"):
in case this field is filled, it is passed as-is to SLF4J ILoggingEvent.message field.
in case this field is not filled, the current behaviour is followed (using the formatted message).
This will make it easier for me to implement something on top of KLogger to fill that field properly (I'm thinking of implementing a Kotlin compiler plugin).
Context
SLF4J
ILoggingEvent
has two important fields / getter methods:message
- contains the message template (e.g."Hello {}!"
)formattedMessage
- contains the final formatted/merged log message (e.g."Hello world!"
)This distinction is useful -- for example, we use this to aggregate log messages.
Issue
KLogger
relies on Kotlin string interpolation and as a result, themessage
field contains the same formatted message asformattedMessage
, breaking the possibilities for aggregation.Proposal
Introduce a new field in
KLoggingEventBuilder
that could contain the log message template (e.g."Hello $variable!"
):ILoggingEvent.message
field.This will make it easier for me to implement something on top of
KLogger
to fill that field properly (I'm thinking of implementing a Kotlin compiler plugin).