
Hello Thanks for your fast reply. I checked that janino.jar is deployed. However, when I add the statuslistener to the configuration file, logback writes the following exception: 16:39:24,539 |-ERROR in ch.qos.logback.core.filter.EvaluatorFilter@151aa16 - Evaluator null threw an exception ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:80) at at ch.qos.logback.core.filter.EvaluatorFilter.decide(EvaluatorFilter.java:6 5) at at ch.qos.logback.core.spi.FilterAttachableImpl.getFilterChainDecision(Filt erAttachableImpl.java:52) at at ch.qos.logback.core.UnsynchronizedAppenderBase.getFilterChainDecision(Un synchronizedAppenderBase.java:141) at at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAp penderBase.java:86) at at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(App enderAttachableImpl.java:64) at at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:283) at at ch.qos.logback.classic.Logger.callAppenders(Logger.java:270) at at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:471 ) at at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:443) at at ch.qos.logback.classic.Logger.debug(Logger.java:536) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.setLogSeverity(L ogManager.java:141) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.clearLog(LogMana ger.java:88) at at com.roche.dp.rss.gateway.userinterfaces.backing.Log.purgeLog(Log.java:34 ) at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.apache.el.parser.AstValue.invoke(AstValue.java:191) at at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java: 68) at at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(Method BindingMethodExpressionAdapter.java:88) at at com.sun.faces.application.ActionListenerImpl.processAction(ActionListene rImpl.java:102) at at javax.faces.component.UICommand.broadcast(UICommand.java:387) at at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324) at at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:29 9) at at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256) at at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java :469) at at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplication Phase.java:82) at at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:290) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter .java:388) at at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:235) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:233) at at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:191) at at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :127) at at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :102) at at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) at at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2 98) at at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:85 2) at at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process( Http11Protocol.java:588) at at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at at java.lang.Thread.run(Thread.java:636) Caused by: java.lang.reflect.InvocationTargetException at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:931) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:349) at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:73) at ... 49 common frames omitted Caused by: java.lang.NullPointerException at at SC.eval0(SC.java:2) at ... 56 common frames omitted P.S. Sorry about the format of the mail. I'm currently not receiving the mails from this group in my inbox and therefore, I had to fetch it from the archive. rom ceki at qos.ch Wed Jun 16 17:13:47 2010 From: ceki at qos.ch (=?ISO-8859-1?Q?Ceki_G=FClc=FC?=) Date: Wed, 16 Jun 2010 17:13:47 +0200 Subject: [logback-user] Filter does not work on tomcat In-Reply-To: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> References: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> Message-ID: <4C18EA2B.20104@qos.ch> Hello Patrick, To see any errors emitted by the EvaluatorFilter, I suggest adding the following line to you configuration file: <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" /> By the way, have you placed janino.jar in your web-application's class path? HTH, On 16/06/2010 4:45 PM, Sager, Patrick wrote:
Hello
I'm using a filter expression to determine the format of my log message. When running the configuration within my JUnit tests, the filter works perfectly. However, when running on a tomcat v6.0 server (within eclipse), the filter gets ignored and all log entries are written twice.
Here's the extract of my logback.xml file:
<!-- Log file for events with an explicitly defined source --> <appender name="ROLLING_LOG_WITH_SOURCE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- Accept only messages with an explicit source --> <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <expression>(mdc.get("source") != null)&& !((String)mdc.get("source")).isEmpty()</expression> </evaluator> <OnMatch>ACCEPT</OnMatch> <OnMismatch>DENY</OnMismatch> </filter> <file>/etc/foe/logs/LogFile.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover monthly and compression of log history -->
<fileNamePattern>TestLogFile-%d{yyyy-MM}.%i.zip</fileNamePattern> <maxHistory>12</maxHistory> <timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 1MB --> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%-5level %date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{source}] %msg%n</pattern> </encoder> </appender>
<!-- Log file for events with no explicitly defined source --> <appender name="ROLLING_LOG_WITHOUT_SOURCE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- Accept discard messages with an explicit source --> <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <expression>(mdc.get("source") != null)&& !((String)mdc.get("source")).isEmpty()</expression> </evaluator> <OnMatch>DENY</OnMatch> <OnMismatch>ACCEPT</OnMismatch> </filter> <file>/etc/foe/logs/LogFile.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover monthly and compression of log history -->
<fileNamePattern>TestLogFile-%d{yyyy-MM}.%i.zip</fileNamePattern> <maxHistory>12</maxHistory> <timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 1MB --> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%-5level %date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%file:%line] %msg%n</pattern> </encoder> </appender>
Is this a known issue, that LogBack does not support filters under tomcat?
Thanks for any help -- Patrick

Hello Patrick, It looks like there is a problem in the evaluator expression, that is in (mdc.get("source") != null) && !((String)mdc.get("source")).isEmpty() For one, isEmtpty() is not a java.lang.String method. HTH, On 17/06/2010 4:48 PM, Sager, Patrick wrote:
Hello
Thanks for your fast reply.
I checked that janino.jar is deployed. However, when I add the statuslistener to the configuration file, logback writes the following exception:
16:39:24,539 |-ERROR in ch.qos.logback.core.filter.EvaluatorFilter@151aa16 - Evaluator null threw an exception ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:80) at at ch.qos.logback.core.filter.EvaluatorFilter.decide(EvaluatorFilter.java:6 5) at at ch.qos.logback.core.spi.FilterAttachableImpl.getFilterChainDecision(Filt erAttachableImpl.java:52) at at ch.qos.logback.core.UnsynchronizedAppenderBase.getFilterChainDecision(Un synchronizedAppenderBase.java:141) at at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAp penderBase.java:86) at at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(App enderAttachableImpl.java:64) at at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:283) at at ch.qos.logback.classic.Logger.callAppenders(Logger.java:270) at at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:471 ) at at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:443) at at ch.qos.logback.classic.Logger.debug(Logger.java:536) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.setLogSeverity(L ogManager.java:141) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.clearLog(LogMana ger.java:88) at at com.roche.dp.rss.gateway.userinterfaces.backing.Log.purgeLog(Log.java:34 ) at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.apache.el.parser.AstValue.invoke(AstValue.java:191) at at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java: 68) at at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(Method BindingMethodExpressionAdapter.java:88) at at com.sun.faces.application.ActionListenerImpl.processAction(ActionListene rImpl.java:102) at at javax.faces.component.UICommand.broadcast(UICommand.java:387) at at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324) at at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:29 9) at at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256) at at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java :469) at at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplication Phase.java:82) at at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:290) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter .java:388) at at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:235) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:233) at at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:191) at at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :127) at at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :102) at at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) at at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2 98) at at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:85 2) at at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process( Http11Protocol.java:588) at at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at at java.lang.Thread.run(Thread.java:636) Caused by: java.lang.reflect.InvocationTargetException at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:931) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:349) at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:73) at ... 49 common frames omitted Caused by: java.lang.NullPointerException at at SC.eval0(SC.java:2) at ... 56 common frames omitted
P.S. Sorry about the format of the mail. I'm currently not receiving the mails from this group in my inbox and therefore, I had to fetch it from the archive.
rom ceki at qos.ch Wed Jun 16 17:13:47 2010 From: ceki at qos.ch (=?ISO-8859-1?Q?Ceki_G=FClc=FC?=) Date: Wed, 16 Jun 2010 17:13:47 +0200 Subject: [logback-user] Filter does not work on tomcat In-Reply-To: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> References: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> Message-ID:<4C18EA2B.20104@qos.ch>
Hello Patrick,
To see any errors emitted by the EvaluatorFilter, I suggest adding the following line to you configuration file:
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
By the way, have you placed janino.jar in your web-application's class path?
HTH,
On 16/06/2010 4:45 PM, Sager, Patrick wrote:
Hello
I'm using a filter expression to determine the format of my log message. When running the configuration within my JUnit tests, the filter works perfectly. However, when running on a tomcat v6.0 server (within eclipse), the filter gets ignored and all log entries are written twice.
Here's the extract of my logback.xml file:
<!-- Log file for events with an explicitly defined source --> <appender name="ROLLING_LOG_WITH_SOURCE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- Accept only messages with an explicit source --> <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <expression>(mdc.get("source") != null)&& !((String)mdc.get("source")).isEmpty()</expression> </evaluator> <OnMatch>ACCEPT</OnMatch> <OnMismatch>DENY</OnMismatch> </filter> <file>/etc/foe/logs/LogFile.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover monthly and compression of log history -->
<fileNamePattern>TestLogFile-%d{yyyy-MM}.%i.zip</fileNamePattern> <maxHistory>12</maxHistory> <timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 1MB --> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%-5level %date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{source}] %msg%n</pattern> </encoder> </appender>
<!-- Log file for events with no explicitly defined source --> <appender name="ROLLING_LOG_WITHOUT_SOURCE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- Accept discard messages with an explicit source --> <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <expression>(mdc.get("source") != null)&& !((String)mdc.get("source")).isEmpty()</expression> </evaluator> <OnMatch>DENY</OnMatch> <OnMismatch>ACCEPT</OnMismatch> </filter> <file>/etc/foe/logs/LogFile.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover monthly and compression of log history -->
<fileNamePattern>TestLogFile-%d{yyyy-MM}.%i.zip</fileNamePattern> <maxHistory>12</maxHistory> <timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 1MB --> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%-5level %date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%file:%line] %msg%n</pattern> </encoder> </appender>
Is this a known issue, that LogBack does not support filters under tomcat?
Thanks for any help -- Patrick

Hello HTH I don't think that isEmpty() is the problem, as this method does exist since Java 1.6. Furthermore, when using an unknown method, janino throws a corresponding exception. E.g., 17:32:25,398 |-ERROR in ch.qos.logback.classic.boolex.JaninoEventEvaluator@1064a6d - Could not start evaluator with expression [((String)mdc.get("source").foe() != null)] org.codehaus.commons.compiler.CompileException: Line 2, Column 31: A method named "foe" is not declared in any enclosing class nor any supertype, nor through a static import at org.codehaus.commons.compiler.CompileException: Line 2, Column 31: A method named "foe" is not declared in any enclosing class nor any supertype, nor through a static import at at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:9013) at at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:6548) at at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:3428) ... Furthermore, the filter works correctly when running within my JUnit tests. My guess is, that mdc is null. Do I somehow need to initialize it? Best regards -- Patrick -----Original Message----- From: logback-user-bounces@qos.ch [mailto:logback-user-bounces@qos.ch] On Behalf Of Ceki Gülcü Sent: Thursday, June 17, 2010 5:16 PM To: logback users list Subject: Re: [logback-user] Filter does not work on tomcat Hello Patrick, It looks like there is a problem in the evaluator expression, that is in (mdc.get("source") != null) && !((String)mdc.get("source")).isEmpty() For one, isEmtpty() is not a java.lang.String method. HTH, On 17/06/2010 4:48 PM, Sager, Patrick wrote:
Hello
Thanks for your fast reply.
I checked that janino.jar is deployed. However, when I add the statuslistener to the configuration file, logback writes the following exception:
16:39:24,539 |-ERROR in ch.qos.logback.core.filter.EvaluatorFilter@151aa16 - Evaluator null threw an exception ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:80) at at ch.qos.logback.core.filter.EvaluatorFilter.decide(EvaluatorFilter.java:6 5) at at ch.qos.logback.core.spi.FilterAttachableImpl.getFilterChainDecision(Filt erAttachableImpl.java:52) at at ch.qos.logback.core.UnsynchronizedAppenderBase.getFilterChainDecision(Un synchronizedAppenderBase.java:141) at at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAp penderBase.java:86) at at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(App enderAttachableImpl.java:64) at at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:283) at at ch.qos.logback.classic.Logger.callAppenders(Logger.java:270) at at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:471 ) at at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:443) at at ch.qos.logback.classic.Logger.debug(Logger.java:536) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.setLogSeverity(L ogManager.java:141) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.clearLog(LogMana ger.java:88) at at com.roche.dp.rss.gateway.userinterfaces.backing.Log.purgeLog(Log.java:34 ) at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.apache.el.parser.AstValue.invoke(AstValue.java:191) at at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java: 68) at at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(Method BindingMethodExpressionAdapter.java:88) at at com.sun.faces.application.ActionListenerImpl.processAction(ActionListene rImpl.java:102) at at javax.faces.component.UICommand.broadcast(UICommand.java:387) at at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324) at at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:29 9) at at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256) at at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java :469) at at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplication Phase.java:82) at at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:290) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter .java:388) at at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:235) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:233) at at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:191) at at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :127) at at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :102) at at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) at at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2 98) at at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:85 2) at at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process( Http11Protocol.java:588) at at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at at java.lang.Thread.run(Thread.java:636) Caused by: java.lang.reflect.InvocationTargetException at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:931) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:349) at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:73) at ... 49 common frames omitted Caused by: java.lang.NullPointerException at at SC.eval0(SC.java:2) at ... 56 common frames omitted
P.S. Sorry about the format of the mail. I'm currently not receiving the mails from this group in my inbox and therefore, I had to fetch it from the archive.
rom ceki at qos.ch Wed Jun 16 17:13:47 2010 From: ceki at qos.ch (=?ISO-8859-1?Q?Ceki_G=FClc=FC?=) Date: Wed, 16 Jun 2010 17:13:47 +0200 Subject: [logback-user] Filter does not work on tomcat In-Reply-To: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> References: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> Message-ID:<4C18EA2B.20104@qos.ch>
Hello Patrick,
To see any errors emitted by the EvaluatorFilter, I suggest adding the following line to you configuration file:
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
By the way, have you placed janino.jar in your web-application's class path?
HTH,
On 16/06/2010 4:45 PM, Sager, Patrick wrote:
Hello
I'm using a filter expression to determine the format of my log message. When running the configuration within my JUnit tests, the filter works perfectly. However, when running on a tomcat v6.0 server (within eclipse), the filter gets ignored and all log entries are written twice.
Here's the extract of my logback.xml file:
<!-- Log file for events with an explicitly defined source --> <appender name="ROLLING_LOG_WITH_SOURCE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- Accept only messages with an explicit source --> <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <expression>(mdc.get("source") != null)&& !((String)mdc.get("source")).isEmpty()</expression> </evaluator> <OnMatch>ACCEPT</OnMatch> <OnMismatch>DENY</OnMismatch> </filter> <file>/etc/foe/logs/LogFile.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover monthly and compression of log history -->
<fileNamePattern>TestLogFile-%d{yyyy-MM}.%i.zip</fileNamePattern> <maxHistory>12</maxHistory> <timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 1MB --> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%-5level %date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{source}] %msg%n</pattern> </encoder> </appender>
<!-- Log file for events with no explicitly defined source --> <appender name="ROLLING_LOG_WITHOUT_SOURCE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- Accept discard messages with an explicit source --> <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <expression>(mdc.get("source") != null)&& !((String)mdc.get("source")).isEmpty()</expression> </evaluator> <OnMatch>DENY</OnMatch> <OnMismatch>ACCEPT</OnMismatch> </filter> <file>/etc/foe/logs/LogFile.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover monthly and compression of log history -->
<fileNamePattern>TestLogFile-%d{yyyy-MM}.%i.zip</fileNamePattern> <maxHistory>12</maxHistory> <timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 1MB --> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%-5level %date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%file:%line] %msg%n</pattern> </encoder> </appender>
Is this a known issue, that LogBack does not support filters under tomcat?
Thanks for any help -- Patrick
_______________________________________________ Logback-user mailing list Logback-user@qos.ch http://qos.ch/mailman/listinfo/logback-user

I think your guess about the mdc variable being null is correct. You should change the expression to: (mdc != null) && (mdc.get("source") != null) && !((String)mdc.get("source")).isEmpty() Note that you can also write evaluator expressions in Groovy [1]. The equivalent expressions would be written "e.mdc?.get('source')?.isEmpty()". Note the use of '?.', the safe navigation operator, resulting in a much shorter expression. HTH, [1] http://logback.qos.ch/manual/filters.html#GEventEvaluator On 17/06/2010 5:36 PM, Sager, Patrick wrote:
Hello HTH
I don't think that isEmpty() is the problem, as this method does exist since Java 1.6. Furthermore, when using an unknown method, janino throws a corresponding exception. E.g., 17:32:25,398 |-ERROR in ch.qos.logback.classic.boolex.JaninoEventEvaluator@1064a6d - Could not start evaluator with expression [((String)mdc.get("source").foe() != null)] org.codehaus.commons.compiler.CompileException: Line 2, Column 31: A method named "foe" is not declared in any enclosing class nor any supertype, nor through a static import at org.codehaus.commons.compiler.CompileException: Line 2, Column 31: A method named "foe" is not declared in any enclosing class nor any supertype, nor through a static import at at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:9013) at at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:6548) at at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:3428) ...
Furthermore, the filter works correctly when running within my JUnit tests. My guess is, that mdc is null. Do I somehow need to initialize it?
Best regards -- Patrick
-----Original Message----- From: logback-user-bounces@qos.ch [mailto:logback-user-bounces@qos.ch] On Behalf Of Ceki Gülcü Sent: Thursday, June 17, 2010 5:16 PM To: logback users list Subject: Re: [logback-user] Filter does not work on tomcat
Hello Patrick,
It looks like there is a problem in the evaluator expression, that is in (mdc.get("source") != null)&& !((String)mdc.get("source")).isEmpty()
For one, isEmtpty() is not a java.lang.String method.
HTH,
On 17/06/2010 4:48 PM, Sager, Patrick wrote:
Hello
Thanks for your fast reply.
I checked that janino.jar is deployed. However, when I add the statuslistener to the configuration file, logback writes the following exception:
16:39:24,539 |-ERROR in ch.qos.logback.core.filter.EvaluatorFilter@151aa16 - Evaluator null threw an exception ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:80) at at ch.qos.logback.core.filter.EvaluatorFilter.decide(EvaluatorFilter.java:6 5) at at ch.qos.logback.core.spi.FilterAttachableImpl.getFilterChainDecision(Filt erAttachableImpl.java:52) at at ch.qos.logback.core.UnsynchronizedAppenderBase.getFilterChainDecision(Un synchronizedAppenderBase.java:141) at at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAp penderBase.java:86) at at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(App enderAttachableImpl.java:64) at at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:283) at at ch.qos.logback.classic.Logger.callAppenders(Logger.java:270) at at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:471 ) at at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:443) at at ch.qos.logback.classic.Logger.debug(Logger.java:536) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.setLogSeverity(L ogManager.java:141) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.clearLog(LogMana ger.java:88) at at com.roche.dp.rss.gateway.userinterfaces.backing.Log.purgeLog(Log.java:34 ) at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.apache.el.parser.AstValue.invoke(AstValue.java:191) at at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java: 68) at at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(Method BindingMethodExpressionAdapter.java:88) at at com.sun.faces.application.ActionListenerImpl.processAction(ActionListene rImpl.java:102) at at javax.faces.component.UICommand.broadcast(UICommand.java:387) at at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324) at at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:29 9) at at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256) at at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java :469) at at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplication Phase.java:82) at at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:290) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter .java:388) at at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:235) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:233) at at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:191) at at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :127) at at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :102) at at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) at at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2 98) at at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:85 2) at at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process( Http11Protocol.java:588) at at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at at java.lang.Thread.run(Thread.java:636) Caused by: java.lang.reflect.InvocationTargetException at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:931) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:349) at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:73) at ... 49 common frames omitted Caused by: java.lang.NullPointerException at at SC.eval0(SC.java:2) at ... 56 common frames omitted
P.S. Sorry about the format of the mail. I'm currently not receiving the mails from this group in my inbox and therefore, I had to fetch it from the archive.
rom ceki at qos.ch Wed Jun 16 17:13:47 2010 From: ceki at qos.ch (=?ISO-8859-1?Q?Ceki_G=FClc=FC?=) Date: Wed, 16 Jun 2010 17:13:47 +0200 Subject: [logback-user] Filter does not work on tomcat In-Reply-To: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> References: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> Message-ID:<4C18EA2B.20104@qos.ch>

I forgot the negation. The equivalent groovy expression would be !(e.mdc?.get('source')?.isEmpty()) On 17/06/2010 7:04 PM, Ceki Gülcü wrote:
I think your guess about the mdc variable being null is correct. You should change the expression to:
(mdc != null) && (mdc.get("source") != null) && !((String)mdc.get("source")).isEmpty()
Note that you can also write evaluator expressions in Groovy [1]. The equivalent expressions would be written "e.mdc?.get('source')?.isEmpty()". Note the use of '?.', the safe navigation operator, resulting in a much shorter expression.
HTH,
[1] http://logback.qos.ch/manual/filters.html#GEventEvaluator
On 17/06/2010 5:36 PM, Sager, Patrick wrote:
Hello HTH
I don't think that isEmpty() is the problem, as this method does exist since Java 1.6. Furthermore, when using an unknown method, janino throws a corresponding exception. E.g., 17:32:25,398 |-ERROR in ch.qos.logback.classic.boolex.JaninoEventEvaluator@1064a6d - Could not start evaluator with expression [((String)mdc.get("source").foe() != null)] org.codehaus.commons.compiler.CompileException: Line 2, Column 31: A method named "foe" is not declared in any enclosing class nor any supertype, nor through a static import at org.codehaus.commons.compiler.CompileException: Line 2, Column 31: A method named "foe" is not declared in any enclosing class nor any supertype, nor through a static import at at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:9013) at at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:6548) at at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:3428) ...
Furthermore, the filter works correctly when running within my JUnit tests. My guess is, that mdc is null. Do I somehow need to initialize it?
Best regards -- Patrick
-----Original Message----- From: logback-user-bounces@qos.ch [mailto:logback-user-bounces@qos.ch] On Behalf Of Ceki Gülcü Sent: Thursday, June 17, 2010 5:16 PM To: logback users list Subject: Re: [logback-user] Filter does not work on tomcat
Hello Patrick,
It looks like there is a problem in the evaluator expression, that is in (mdc.get("source") != null)&& !((String)mdc.get("source")).isEmpty()
For one, isEmtpty() is not a java.lang.String method.
HTH,
On 17/06/2010 4:48 PM, Sager, Patrick wrote:
Hello
Thanks for your fast reply.
I checked that janino.jar is deployed. However, when I add the statuslistener to the configuration file, logback writes the following exception:
16:39:24,539 |-ERROR in ch.qos.logback.core.filter.EvaluatorFilter@151aa16 - Evaluator null threw an exception ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:80) at at ch.qos.logback.core.filter.EvaluatorFilter.decide(EvaluatorFilter.java:6 5) at at ch.qos.logback.core.spi.FilterAttachableImpl.getFilterChainDecision(Filt erAttachableImpl.java:52) at at ch.qos.logback.core.UnsynchronizedAppenderBase.getFilterChainDecision(Un synchronizedAppenderBase.java:141) at at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAp penderBase.java:86) at at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(App enderAttachableImpl.java:64) at at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:283) at at ch.qos.logback.classic.Logger.callAppenders(Logger.java:270) at at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:471 ) at at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:443) at at ch.qos.logback.classic.Logger.debug(Logger.java:536) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.setLogSeverity(L ogManager.java:141) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.clearLog(LogMana ger.java:88) at at com.roche.dp.rss.gateway.userinterfaces.backing.Log.purgeLog(Log.java:34 ) at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.apache.el.parser.AstValue.invoke(AstValue.java:191) at at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java: 68) at at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(Method BindingMethodExpressionAdapter.java:88) at at com.sun.faces.application.ActionListenerImpl.processAction(ActionListene rImpl.java:102) at at javax.faces.component.UICommand.broadcast(UICommand.java:387) at at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324) at at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:29 9) at at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256) at at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java :469) at at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplication Phase.java:82) at at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:290) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter .java:388) at at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:235) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:233) at at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:191) at at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :127) at at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :102) at at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) at at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2 98) at at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:85 2) at at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process( Http11Protocol.java:588) at at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at at java.lang.Thread.run(Thread.java:636) Caused by: java.lang.reflect.InvocationTargetException at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:931) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:349) at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:73) at ... 49 common frames omitted Caused by: java.lang.NullPointerException at at SC.eval0(SC.java:2) at ... 56 common frames omitted
P.S. Sorry about the format of the mail. I'm currently not receiving the mails from this group in my inbox and therefore, I had to fetch it from the archive.
rom ceki at qos.ch Wed Jun 16 17:13:47 2010 From: ceki at qos.ch (=?ISO-8859-1?Q?Ceki_G=FClc=FC?=) Date: Wed, 16 Jun 2010 17:13:47 +0200 Subject: [logback-user] Filter does not work on tomcat In-Reply-To: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> References: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> Message-ID:<4C18EA2B.20104@qos.ch>
_______________________________________________ Logback-user mailing list Logback-user@qos.ch http://qos.ch/mailman/listinfo/logback-user

Ok, the checking of mdc for null did the trick. Thanks a lot for the very fast help -- Patrick -----Original Message----- From: logback-user-bounces@qos.ch [mailto:logback-user-bounces@qos.ch] On Behalf Of Ceki Gülcü Sent: Thursday, June 17, 2010 7:04 PM To: logback users list Subject: Re: [logback-user] Filter does not work on tomcat I think your guess about the mdc variable being null is correct. You should change the expression to: (mdc != null) && (mdc.get("source") != null) && !((String)mdc.get("source")).isEmpty() Note that you can also write evaluator expressions in Groovy [1]. The equivalent expressions would be written "e.mdc?.get('source')?.isEmpty()". Note the use of '?.', the safe navigation operator, resulting in a much shorter expression. HTH, [1] http://logback.qos.ch/manual/filters.html#GEventEvaluator On 17/06/2010 5:36 PM, Sager, Patrick wrote:
Hello HTH
I don't think that isEmpty() is the problem, as this method does exist since Java 1.6. Furthermore, when using an unknown method, janino throws a corresponding exception. E.g., 17:32:25,398 |-ERROR in ch.qos.logback.classic.boolex.JaninoEventEvaluator@1064a6d - Could not start evaluator with expression [((String)mdc.get("source").foe() != null)] org.codehaus.commons.compiler.CompileException: Line 2, Column 31: A method named "foe" is not declared in any enclosing class nor any supertype, nor through a static import at org.codehaus.commons.compiler.CompileException: Line 2, Column 31: A method named "foe" is not declared in any enclosing class nor any supertype, nor through a static import at at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:9013) at at org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:6548) at at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:3428) ...
Furthermore, the filter works correctly when running within my JUnit tests. My guess is, that mdc is null. Do I somehow need to initialize it?
Best regards -- Patrick
-----Original Message----- From: logback-user-bounces@qos.ch [mailto:logback-user-bounces@qos.ch] On Behalf Of Ceki Gülcü Sent: Thursday, June 17, 2010 5:16 PM To: logback users list Subject: Re: [logback-user] Filter does not work on tomcat
Hello Patrick,
It looks like there is a problem in the evaluator expression, that is in (mdc.get("source") != null)&& !((String)mdc.get("source")).isEmpty()
For one, isEmtpty() is not a java.lang.String method.
HTH,
On 17/06/2010 4:48 PM, Sager, Patrick wrote:
Hello
Thanks for your fast reply.
I checked that janino.jar is deployed. However, when I add the statuslistener to the configuration file, logback writes the following exception:
16:39:24,539 |-ERROR in ch.qos.logback.core.filter.EvaluatorFilter@151aa16 - Evaluator null threw an exception ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at ch.qos.logback.core.boolex.EvaluationException: Evaluator [null] caused an exception at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:80) at at ch.qos.logback.core.filter.EvaluatorFilter.decide(EvaluatorFilter.java:6 5) at at ch.qos.logback.core.spi.FilterAttachableImpl.getFilterChainDecision(Filt erAttachableImpl.java:52) at at ch.qos.logback.core.UnsynchronizedAppenderBase.getFilterChainDecision(Un synchronizedAppenderBase.java:141) at at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAp penderBase.java:86) at at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(App enderAttachableImpl.java:64) at at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:283) at at ch.qos.logback.classic.Logger.callAppenders(Logger.java:270) at at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:471 ) at at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:443) at at ch.qos.logback.classic.Logger.debug(Logger.java:536) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.setLogSeverity(L ogManager.java:141) at at com.roche.dp.rss.gateway.configuration.tools.LogManager.clearLog(LogMana ger.java:88) at at com.roche.dp.rss.gateway.userinterfaces.backing.Log.purgeLog(Log.java:34 ) at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.apache.el.parser.AstValue.invoke(AstValue.java:191) at at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java: 68) at at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(Method BindingMethodExpressionAdapter.java:88) at at com.sun.faces.application.ActionListenerImpl.processAction(ActionListene rImpl.java:102) at at javax.faces.component.UICommand.broadcast(UICommand.java:387) at at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324) at at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:29 9) at at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256) at at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java :469) at at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplication Phase.java:82) at at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:290) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter .java:388) at at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:235) at at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:206) at at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:233) at at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:191) at at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :127) at at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :102) at at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) at at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2 98) at at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:85 2) at at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process( Http11Protocol.java:588) at at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at at java.lang.Thread.run(Thread.java:636) Caused by: java.lang.reflect.InvocationTargetException at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:57) at at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:43) at at java.lang.reflect.Method.invoke(Method.java:616) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:931) at at org.codehaus.janino.ScriptEvaluator.evaluate(ScriptEvaluator.java:349) at at ch.qos.logback.core.boolex.JaninoEventEvaluatorBase.evaluate(JaninoEvent EvaluatorBase.java:73) at ... 49 common frames omitted Caused by: java.lang.NullPointerException at at SC.eval0(SC.java:2) at ... 56 common frames omitted
P.S. Sorry about the format of the mail. I'm currently not receiving the mails from this group in my inbox and therefore, I had to fetch it from the archive.
rom ceki at qos.ch Wed Jun 16 17:13:47 2010 From: ceki at qos.ch (=?ISO-8859-1?Q?Ceki_G=FClc=FC?=) Date: Wed, 16 Jun 2010 17:13:47 +0200 Subject: [logback-user] Filter does not work on tomcat In-Reply-To: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> References: <912DB9C0846F3042A4BB7FDA0962FCA61037C64F@rkamsem1.emea.roche.com> Message-ID:<4C18EA2B.20104@qos.ch>
_______________________________________________ Logback-user mailing list Logback-user@qos.ch http://qos.ch/mailman/listinfo/logback-user
participants (2)
-
Ceki Gülcü
-
Sager, Patrick