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

On Fri, Mar 4, 2016 at 6:01 PM, Ceki Gulcu <ceki@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@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@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user

_______________________________________________
logback-user mailing list
logback-user@qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user