[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