I am trying to add log.origin values to my json when logging. I am using default Elastic encoder co.elastic.logging.logback.EcsEncoder
. I’ve successfully added it using <includeCallerData>true</includeCallerData>
, but I would like to add it as new fields. This options adds it as nested object.
here is my logback appender
<appender name="ELASTIC_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder class="co.elastic.logging.logback.EcsEncoder">
<serviceName>My_service</serviceName>
<includeOrigin>true</includeOrigin>
</encoder>
<additionalField>
<key>UUID</key>
<value>String</value>
</additionalField>
<file>${LOGS}/log.3</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOGS}/log.3.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
<maxHistory>${LOG_FILE_MAX_HISTORY:-0}</maxHistory>
</rollingPolicy>
</appender>
And here is the json that I get
{
"@timestamp": "2024-04-24T11:00:06.475Z",
"log.level": "WARN",
"message": "Mesg",
"ecs.version": "1.2.0",
"service.name": "My_service",
"event.dataset": "My_service",
"process.thread.name": "main",
"log.logger": "com.example",
"UUID": "UUID",
"log": {
"origin": {
"file": {
"name": "Test.java",
"line": 130
},
"function": "getPerson"
}
}
}