[logback-dev] [JIRA] Commented: (LBCLASSIC-54) TurboFilterAttachableImpl.addTurboFilter() will behave funny if newFilter.turboNext != null

Ceki Gulcu (JIRA) noreply-jira at qos.ch
Fri Oct 31 11:26:21 CET 2008


    [ http://jira.qos.ch/browse/LBCLASSIC-54?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=10869#action_10869 ] 

Ceki Gulcu commented on LBCLASSIC-54:
-------------------------------------

Hi Anton,

In the TurboFilterAttachable interface, the getFirstTurboFilter is meant to be used by test. I never intended for the turbo filter chain to be manipulated through that method. 

I intend to modify the TurboFilterAttachable  interface by adding a getCopyOfTurboFilterChain and then removing getFirstTurboFilter. This should allow you insert a new filter at the beginning and reconstruct the chain with a copy obtained via  getCopyOfTurboFilterChain.

Would it be helpful if there was a method to insert a TF a the beginning of the chain?  I could add that method as well.


> TurboFilterAttachableImpl.addTurboFilter() will behave funny if newFilter.turboNext != null
> -------------------------------------------------------------------------------------------
>
>                 Key: LBCLASSIC-54
>                 URL: http://jira.qos.ch/browse/LBCLASSIC-54
>             Project: logback-classic
>          Issue Type: Bug
>            Reporter: Anton Tagunov
>            Assignee: Logback dev list
>            Priority: Minor
>
> Hi!
> addTurboFilter() sets tailFilter incorrectly if newFilter.nextFilter != null
> Here's what I was trying to do.
> I implement a new TurboFilter.
> This TurboFilter is an interceptor that captures log messages and stores them for analysis.
> This is part of Unit Test. This Unit Test has to ensure that a specific message has been logged.
> This TurboFilter is not configured via logback.xml
> It can be but I don't want that to be mandatory.
> Instead this TurboFilter needs to bind itself to LoggerContext programmatically, via Logback API.
> It also need to bind itself as _the first filter in the chain_.
> Here's how I've tried to do it:
>       final LogbackMessageProducer nuvo = new LogbackMessageProducer(true);
>       
>       /* make sure we're the first in the chain */
>       final TurboFilter oldFirst = tfa.getFirstTurboFilter();
>       nuvo.setNext(oldFirst);
>       
>       tfa.clearAllTurboFilters();
>       tfa.addTurboFilter(nuvo);
> However should somebody else call addTurboFilter(some-other-filter) after this behavior shall be funny.
> Basically all old turbo filters that were bound before my code executed shall be lost.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the logback-dev mailing list