<div dir="ltr">Created <a href="http://jira.qos.ch/browse/LOGBACK-1149">http://jira.qos.ch/browse/LOGBACK-1149</a><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 4, 2016 at 6:01 PM, Ceki Gulcu <span dir="ltr"><<a href="mailto:ceki@qos.ch" target="_blank">ceki@qos.ch</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hi Stevo,<br>
<br>
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/>?<br>
<br>
--<br>
Ceki<div><div class="h5"><br>
<br>
<br>
On 3/4/2016 16:53, Stevo Slavić wrote:<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
Hello Logback community,<br>
<br>
I converted Apache Kafka log4j.properties to logback.xml using<br>
<a href="http://logback.qos.ch/translator/" rel="noreferrer" target="_blank">http://logback.qos.ch/translator/</a><br>
<br>
Translator didn't report invalid '$' char in logger name, only when<br>
running app, logback threw exception:<br>
<br>
16:07:38,628 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@701:80<br>
- RuntimeException in Action for tag [logger]<br>
java.lang.IllegalArgumentException: Failed to parse input<br>
[kafka.network.RequestChannel$]<br>
     at java.lang.IllegalArgumentException: Failed to parse input<br>
[kafka.network.RequestChannel$]<br>
     at     at<br>
ch.qos.logback.core.util.OptionHelper.substVars(OptionHelper.java:114)<br>
     at     at<br>
ch.qos.logback.core.joran.spi.InterpretationContext.subst(InterpretationContext.java:157)<br>
     at     at<br>
ch.qos.logback.classic.joran.action.LoggerAction.begin(LoggerAction.java:44)<br>
     at     at<br>
ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:269)<br>
     at     at<br>
ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:145)<br>
     at     at<br>
ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:128)<br>
     at     at<br>
ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)<br>
     at     at<br>
ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:148)<br>
     at     at<br>
ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:135)<br>
     at     at<br>
ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:100)<br>
     at     at<br>
ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:50)<br>
     at     at<br>
ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)<br>
     at     at<br>
ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)<br>
     at     at<br>
org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)<br>
     at     at<br>
org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)<br>
     at     at org.slf4j.LoggerFactory.bind(LoggerFactory.java:147)<br>
     at     at<br>
org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:122)<br>
     at     at<br>
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<br>
pattern string<br>
     at     at<br>
ch.qos.logback.core.subst.Tokenizer.tokenize(Tokenizer.java:70)<br>
     at     at<br>
ch.qos.logback.core.subst.NodeToStringTransformer.tokenizeAndParseString(NodeToStringTransformer.java:53)<br>
     at     at<br>
ch.qos.logback.core.subst.NodeToStringTransformer.substituteVariable(NodeToStringTransformer.java:46)<br>
     at     at<br>
ch.qos.logback.core.util.OptionHelper.substVars(OptionHelper.java:112)<br>
     at     ... 23 common frames omitted<br>
<br>
Should $ char be allowed in logger name? In other words is it bug in<br>
configuration if one uses it or is it bug in logback that it doesn't<br>
handle it well? I'm using logback 1.7.18.<br>
<br>
<br>
Secondly, translator had problems converting data pattern like:<br>
<br>
log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender<br>
log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH<br>
log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log<br>
<br>
it converted that to<br>
<br>
...<br>
     <rollingPolicy<br>
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><br>
<br>
<fileNamePattern>${kafka.logs.dir}/server.log.%d{'.'yyyy-MM-dd-HH}</fileNamePattern><br>
     </rollingPolicy><br>
...<br>
<br>
where Logback complained about that dot '.' in fileNamePattern as invalid.<br>
<br>
<br>
Lastly, it seems in Logback specification when to roll (e.g. daily) and<br>
what should be format and info included in the file name are tightly<br>
coupled.<br>
<br>
Kind regards,<br>
Stevo Slavic.<br>
<br>
<br></div></div>
_______________________________________________<br>
logback-user mailing list<br>
<a href="mailto:logback-user@qos.ch" target="_blank">logback-user@qos.ch</a><br>
<a href="http://mailman.qos.ch/mailman/listinfo/logback-user" rel="noreferrer" target="_blank">http://mailman.qos.ch/mailman/listinfo/logback-user</a><br>
<br>
</blockquote>
_______________________________________________<br>
logback-user mailing list<br>
<a href="mailto:logback-user@qos.ch" target="_blank">logback-user@qos.ch</a><br>
<a href="http://mailman.qos.ch/mailman/listinfo/logback-user" rel="noreferrer" target="_blank">http://mailman.qos.ch/mailman/listinfo/logback-user</a></blockquote></div><br></div>