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@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
[email protected]
http://mailman.qos.ch/mailman/listinfo/logback-user

Reply via email to