<div dir="ltr"><div><div><div><div><div>Hello Logback community,<br><br></div>I converted Apache Kafka log4j.properties to logback.xml using <a href="http://logback.qos.ch/translator/">http://logback.qos.ch/translator/</a><br><br></div>Translator didn't report invalid '$' char in logger name, only when running app, logback threw exception:<br><br><span style="font-family:monospace,monospace">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$]<br>    at java.lang.IllegalArgumentException: Failed to parse input [kafka.network.RequestChannel$]<br>    at     at ch.qos.logback.core.util.OptionHelper.substVars(OptionHelper.java:114)<br>    at     at ch.qos.logback.core.joran.spi.InterpretationContext.subst(InterpretationContext.java:157)<br>    at     at ch.qos.logback.classic.joran.action.LoggerAction.begin(LoggerAction.java:44)<br>    at     at ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:269)<br>    at     at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:145)<br>    at     at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:128)<br>    at     at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)<br>    at     at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:148)<br>    at     at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:135)<br>    at     at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:100)<br>    at     at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:50)<br>    at     at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)<br>    at     at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)<br>    at     at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)<br>    at     at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)<br>    at     at org.slf4j.LoggerFactory.bind(LoggerFactory.java:147)<br>    at     at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:122)<br>    at     at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:378)<br>    at     at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:328)<br>    at     at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:349)<br>    at     at org.apache.kafka.common.utils.Utils.<clinit>(Utils.java:54)<br>    at     at kafka.Kafka$.getPropsFromArgs(Kafka.scala:41)<br>    at     at kafka.Kafka$.main(Kafka.scala:57)<br>    at     at kafka.Kafka.main(Kafka.scala)<br>Caused by: ch.qos.logback.core.spi.ScanException: Unexpected end of pattern string<br>    at     at ch.qos.logback.core.subst.Tokenizer.tokenize(Tokenizer.java:70)<br>    at     at ch.qos.logback.core.subst.NodeToStringTransformer.tokenizeAndParseString(NodeToStringTransformer.java:53)<br>    at     at ch.qos.logback.core.subst.NodeToStringTransformer.substituteVariable(NodeToStringTransformer.java:46)<br>    at     at ch.qos.logback.core.util.OptionHelper.substVars(OptionHelper.java:112)<br>    at     ... 23 common frames omitted</span><br><br></div>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.<br><br></div><div><br>Secondly, translator had problems converting data pattern like:<br><br><span style="font-family:monospace,monospace">log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender</span><br><span style="font-family:monospace,monospace">log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH<br>log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log</span><br><br></div><div>it converted that to<br><br><span style="font-family:monospace,monospace">...<br>    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><br>      <fileNamePattern>${kafka.logs.dir}/server.log.%d{'.'yyyy-MM-dd-HH}</fileNamePattern><br>    </rollingPolicy><br>...<br></span></div><div><br></div><div>where Logback complained about that dot '.' in fileNamePattern as invalid.<br><br></div><div><br>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.<br></div><div><br></div>Kind regards,<br></div>Stevo Slavic.<br></div>