[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