[logback-user] log4j to logback translation issues - $ char in logger name, and rolling policy

Stevo Slavić sslavic at gmail.com
Fri Mar 4 22:18:24 UTC 2016


Created http://jira.qos.ch/browse/LOGBACK-1149

On Fri, Mar 4, 2016 at 6:01 PM, Ceki Gulcu <ceki at qos.ch> wrote:

>
> Hi Stevo,
>
> Both '.' and '$' are recognized as legitimate separator characters in
> logger names. What you are describing looks like a bug in LoggerAction, in
> particular variable substitution. Can you please create a bug report
> including the stack trace below and the configuration snippet <logger/>?
>
> --
> Ceki
>
>
>
> On 3/4/2016 16:53, Stevo Slavić wrote:
>
>> Hello Logback community,
>>
>> I converted Apache Kafka log4j.properties to logback.xml using
>> http://logback.qos.ch/translator/
>>
>> Translator didn't report invalid '$' char in logger name, only when
>> running app, logback threw exception:
>>
>> 16:07:38,628 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter at 701:80
>> - RuntimeException in Action for tag [logger]
>> java.lang.IllegalArgumentException: Failed to parse input
>> [kafka.network.RequestChannel$]
>>      at java.lang.IllegalArgumentException: Failed to parse input
>> [kafka.network.RequestChannel$]
>>      at     at
>> ch.qos.logback.core.util.OptionHelper.substVars(OptionHelper.java:114)
>>      at     at
>>
>> ch.qos.logback.core.joran.spi.InterpretationContext.subst(InterpretationContext.java:157)
>>      at     at
>>
>> ch.qos.logback.classic.joran.action.LoggerAction.begin(LoggerAction.java:44)
>>      at     at
>>
>> ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:269)
>>      at     at
>>
>> ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:145)
>>      at     at
>>
>> ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:128)
>>      at     at
>> ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)
>>      at     at
>>
>> ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:148)
>>      at     at
>>
>> ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:135)
>>      at     at
>>
>> ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:100)
>>      at     at
>>
>> ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:50)
>>      at     at
>>
>> ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
>>      at     at
>>
>> ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)
>>      at     at
>> org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)
>>      at     at
>> org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
>>      at     at org.slf4j.LoggerFactory.bind(LoggerFactory.java:147)
>>      at     at
>> org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:122)
>>      at     at
>> org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:378)
>>      at     at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:328)
>>      at     at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:349)
>>      at     at org.apache.kafka.common.utils.Utils.<clinit>(Utils.java:54)
>>      at     at kafka.Kafka$.getPropsFromArgs(Kafka.scala:41)
>>      at     at kafka.Kafka$.main(Kafka.scala:57)
>>      at     at kafka.Kafka.main(Kafka.scala)
>> Caused by: ch.qos.logback.core.spi.ScanException: Unexpected end of
>> pattern string
>>      at     at
>> ch.qos.logback.core.subst.Tokenizer.tokenize(Tokenizer.java:70)
>>      at     at
>>
>> ch.qos.logback.core.subst.NodeToStringTransformer.tokenizeAndParseString(NodeToStringTransformer.java:53)
>>      at     at
>>
>> ch.qos.logback.core.subst.NodeToStringTransformer.substituteVariable(NodeToStringTransformer.java:46)
>>      at     at
>> ch.qos.logback.core.util.OptionHelper.substVars(OptionHelper.java:112)
>>      at     ... 23 common frames omitted
>>
>> Should $ char be allowed in logger name? In other words is it bug in
>> configuration if one uses it or is it bug in logback that it doesn't
>> handle it well? I'm using logback 1.7.18.
>>
>>
>> Secondly, translator had problems converting data pattern like:
>>
>> log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender
>> log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH
>> log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log
>>
>> it converted that to
>>
>> ...
>>      <rollingPolicy
>> class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
>>
>>
>> <fileNamePattern>${kafka.logs.dir}/server.log.%d{'.'yyyy-MM-dd-HH}</fileNamePattern>
>>      </rollingPolicy>
>> ...
>>
>> where Logback complained about that dot '.' in fileNamePattern as invalid.
>>
>>
>> Lastly, it seems in Logback specification when to roll (e.g. daily) and
>> what should be format and info included in the file name are tightly
>> coupled.
>>
>> Kind regards,
>> Stevo Slavic.
>>
>>
>> _______________________________________________
>> logback-user mailing list
>> logback-user at qos.ch
>> http://mailman.qos.ch/mailman/listinfo/logback-user
>>
>> _______________________________________________
> logback-user mailing list
> logback-user at qos.ch
> http://mailman.qos.ch/mailman/listinfo/logback-user
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.qos.ch/pipermail/logback-user/attachments/20160304/24a3d064/attachment-0001.html>


More information about the logback-user mailing list