logfellow/logstash-logback-encoder

Failed to interpret '%level_value' conversion word

thedevd opened this issue · 1 comments

Describe the bug
Using logLevelValue (field name level_value) in logback throws Failed to interpret '%level_value' conversion word

To Reproduce
Steps to reproduce the behavior:

  1. Use this encoder in logback.xml configuration...
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <pattern>yyyy-MM-dd'T'HH:mm:ss.SSS'Z'</pattern>
                    <timeZone>UTC</timeZone>
                    <fieldName>timestamp</fieldName>
                </timestamp>
                <pattern>
                    <omitEmptyFields>true</omitEmptyFields>
                    <pattern>
                        {
                        "level": "%level",
                        "log_level": "%level_value",
                        "logger": "%logger",
                        "msg": "%message",
                        "trace_id": "%mdc{traceId}"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
  1. See error, or unexpected output
20:55:38,834 |-ERROR in ch.qos.logback.core.pattern.parser.Compiler@5487e8ab - There is no conversion class registered for conversion word [level_value]
20:55:38,834 |-ERROR in ch.qos.logback.core.pattern.parser.Compiler@5487e8ab - [level_value] is not a valid conversion word
20:55:38,834 |-ERROR in net.logstash.logback.composite.loggingevent.LoggingEventPatternJsonProvider@473e6998 - Invalid [pattern]: Invalid JSON property '//log_level' (was '%level_value'): Failed to interpret '%level_value' conversion word. See previous error statuses for more information. net.logstash.logback.pattern.AbstractJsonPatternParser$JsonPatternException: Invalid JSON property '//log_level' (was '%level_value'): Failed to interpret '%level_value' conversion word. See previous error statuses for more information.
	at net.logstash.logback.pattern.AbstractJsonPatternParser$JsonPatternException: Invalid JSON property '//log_level' (was '%level_value'): Failed to interpret '%level_value' conversion word. See previous error statuses for more information.
	at 	at net.logstash.logback.pattern.AbstractJsonPatternParser.parseNode(AbstractJsonPatternParser.java:328)
	at 	at net.logstash.logback.pattern.AbstractJsonPatternParser.parseObject(AbstractJsonPatternParser.java:378)
	at 	at net.logstash.logback.pattern.AbstractJsonPatternParser.parse(AbstractJsonPatternParser.java:307)
	at 	at net.logstash.logback.composite.AbstractPatternJsonProvider.initializeNodeWriter(AbstractPatternJsonProvider.java:104)
	at 	at net.logstash.logback.composite.AbstractPatternJsonProvider.start(AbstractPatternJsonProvider.java:85)
	at 	at net.logstash.logback.composite.JsonProviders.start(JsonProviders.java:48)
	at 	at net.logstash.logback.composite.AbstractCompositeJsonFormatter.start(AbstractCompositeJsonFormatter.java:120)
	at 	at net.logstash.logback.encoder.CompositeJsonEncoder.start(CompositeJsonEncoder.java:129)
	at 	at ch.qos.logback.core.model.processor.ImplicitModelHandler.postHandleComplex(ImplicitModelHandler.java:208)
	at 	at ch.qos.logback.core.model.processor.ImplicitModelHandler.postHandle(ImplicitModelHandler.java:186)
	at 	at ch.qos.logback.core.model.processor.DefaultProcessor.secondPhaseTraverse(DefaultProcessor.java:257)
	at 	at ch.qos.logback.core.model.processor.DefaultProcessor.secondPhaseTraverse(DefaultProcessor.java:253)
	at 	at ch.qos.logback.core.model.processor.DefaultProcessor.secondPhaseTraverse(DefaultProcessor.java:253)
	at 	at ch.qos.logback.core.model.processor.DefaultProcessor.traversalLoop(DefaultProcessor.java:90)
	at 	at ch.qos.logback.core.model.processor.DefaultProcessor.process(DefaultProcessor.java:106)
	at 	at ch.qos.logback.core.joran.GenericXMLConfigurator.processModel(GenericXMLConfigurator.java:208)
	at 	at ch.qos.logback.core.joran.GenericXMLConfigurator.doConfigure(GenericXMLConfigurator.java:170)
	at 	at ch.qos.logback.core.joran.GenericXMLConfigurator.doConfigure(GenericXMLConfigurator.java:122)
	at 	at ch.qos.logback.core.joran.GenericXMLConfigurator.doConfigure(GenericXMLConfigurator.java:65)
	at 	at ch.qos.logback.classic.util.DefaultJoranConfigurator.configureByResource(DefaultJoranConfigurator.java:68)
	at 	at play.api.libs.logback.LogbackLoggerConfigurator.configure(LogbackLoggerConfigurator.scala:128)
	at 	at play.api.libs.logback.LogbackLoggerConfigurator.configure(LogbackLoggerConfigurator.scala:75)
	at 	at play.api.libs.logback.LogbackLoggerConfigurator.configure(LogbackLoggerConfigurator.scala:37)
	

Expected behavior
Although the documentation here https://github.com/logfellow/logstash-logback-encoder?tab=readme-ov-file#providers-for-loggingevents says use field name level_value for Logger level numerical value, but it does not work

  • what output did you expect

Additional context
Following is the version information

  • logstash-logback-encoder 7.4
    "net.logstash.logback" % "logstash-logback-encoder" % "7.4"
  • logback version - 1.4.11
  • jackson version - 2.17.0
  • java version - 11.0.22
  • play framework - 3.0.0

Oops sorry for incovenience, I think I have to add under to include level_value for numerical log value, however I do not want it to that long I mean 20000 for INFO (I want simply 2)