[logback-user] Filter does not work on tomcat

Sager, Patrick patrick.sager at roche.com
Tue Jun 22 11:37:49 CEST 2010


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 at qos.ch [mailto:logback-user-bounces at 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 at 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 at qos.ch [mailto:logback-user-bounces at 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 at 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 at rkamsem1.emea.roche.com>
>> References:
>> <912DB9C0846F3042A4BB7FDA0962FCA61037C64F at rkamsem1.emea.roche.com>
>> Message-ID:<4C18EA2B.20104 at qos.ch>
>>
>>

> http://qos.ch/mailman/listinfo/logback-user

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


More information about the Logback-user mailing list