Robert Munteanu created FELIX-6248:
--------------------------------------
Summary: Unable to use properties and conditions in logback.xml
Key: FELIX-6248
URL: https://issues.apache.org/jira/browse/FELIX-6248
Project: Felix
Issue Type: Bug
Components: Felix Logback
Reporter: Robert Munteanu
Fix For: felix-logback-1.0.2
I am trying to consolidate multiple logback.xml into a single one using
conditional processing and variables ( see
http://logback.qos.ch/manual/configuration.html#definingProps ).
I have updated the logback.xml
{code:xml}<configuration debug="true">
<!-- default log level is INFO, can be overridden using
-DLOGBACK_DEFAULT_LOG_LEVEL=... -->
<variable name="$LOGBACK_DEFAULT_LOG_LEVEL" value="INFO" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="${LOGBACK_DEFAULT_LOG_LEVEL}">
<appender-ref ref="STDOUT" />
</root>
<!-- Silence excessive 'Best match for SASL auth was: SASL-PLAIN' messages -->
<if
condition='property("LOGBACK_DEFAULT_LOG_LEVEL").equalsIgnoreCase("INFO")'>
<then>
<logger name="org.apache.qpid.jms.sasl.SaslMechanismFinder" level="WARN"/>
</then>
</if>
</configuration>{code}
and then added two extra bundles to my application:
- {{org.codehaus.janino/janino/3.1.2}}
- {{org.codehaus.janino/commons-compiler/3.1.2}}
When starting my application logback configuration fails with
{noformat}16:44:57,642 |-ERROR in
ch.qos.logback.core.joran.conditional.IfAction - Failed to parse condition
[property("LOGBACK_DEFAULT_LOG_LEVEL").equalsIgnoreCase("INFO")]
org.codehaus.commons.compiler.InternalCompilerExce
ption: Compiling "SC" in Line 1, Column 1: Cannot load class
'ch.qos.logback.core.joran.conditional.PropertyWrapperForScripts' through the
parent loader
at org.codehaus.commons.compiler.InternalCompilerException: Compiling
"SC" in Line 1, Column 1: Cannot load class
'ch.qos.logback.core.joran.conditional.PropertyWrapperForScripts' through the
parent loader
at at
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:358)
at at
org.codehaus.janino.UnitCompiler.access$000(UnitCompiler.java:231)
at at
org.codehaus.janino.UnitCompiler$1.visitCompilationUnit(UnitCompiler.java:322)
at at
org.codehaus.janino.UnitCompiler$1.visitCompilationUnit(UnitCompiler.java:319)
at at
org.codehaus.janino.Java$CompilationUnit.accept(Java.java:367)
at at
org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:319)
at at
org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:237)
at at
org.codehaus.janino.ClassBodyEvaluator.cook(ClassBodyEvaluator.java:278)
at at
org.codehaus.janino.ClassBodyEvaluator.cook(ClassBodyEvaluator.java:272)
at at
org.codehaus.janino.ClassBodyEvaluator.cook(ClassBodyEvaluator.java:252)
at at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:82)
at at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:77)
at at
ch.qos.logback.core.joran.conditional.PropertyEvalScriptBuilder.build(PropertyEvalScriptBuilder.java:47)
at at
ch.qos.logback.core.joran.conditional.IfAction.begin(IfAction.java:65)
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:165)
at at
ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152)
at at
ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110)
at at
ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)
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:150)
at at
org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
at at
org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)
at at
org.apache.felix.configadmin.plugin.interpolation.Activator.<clinit>(Activator.java:40)
at at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at at
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at at
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at at java.base/java.lang.Class.newInstance(Class.java:584)
at at
org.apache.felix.framework.Felix.createBundleActivator(Felix.java:4750)
at at
org.apache.felix.framework.Felix.activateBundle(Felix.java:2383)
at at org.apache.felix.framework.Felix.startBundle(Felix.java:2308)
at at
org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1539)
at at
org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.codehaus.commons.compiler.InternalCompilerException: Cannot load
class 'ch.qos.logback.core.joran.conditional.PropertyWrapperForScripts' through
the parent loader
at at
org.codehaus.janino.SimpleCompiler$2.getDelegate(SimpleCompiler.java:389)
at at
org.codehaus.janino.SimpleCompiler$2.accept(SimpleCompiler.java:362)
at at
org.codehaus.janino.UnitCompiler.getType(UnitCompiler.java:6395)
at at
org.codehaus.janino.UnitCompiler.access$1300(UnitCompiler.java:231)
at at
org.codehaus.janino.UnitCompiler$33.getSuperclass2(UnitCompiler.java:9935)
at at org.codehaus.janino.IClass.getSuperclass(IClass.java:456)
at at org.codehaus.janino.IClass.getIMethods(IClass.java:261)
at at org.codehaus.janino.IClass.getIMethods(IClass.java:238)
at at
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:461)
at at
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:401)
at at
org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:231)
at at
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:380)
at at
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:375)
at at
org.codehaus.janino.Java$PackageMemberClassDeclaration.accept(Java.java:1692)
at at
org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:375)
at at
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:348)
at ... 42 common frames omitted{noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)