[logback-user] Remove appender from SiftingAppender

Ceki Gülcü ceki at qos.ch
Wed Mar 17 15:05:27 CET 2010


Hello Matthias,

SiftingAppender tracks appenders with the help of a sub-component called 
AppenderTracker. The tracker will close appenders which have not been used in 
the last 30 minutes. It looks like you need to close the nested fike appender 
immediately without waiting the 30 minutes.

If you had a handle on the appender tracker, you could instruct it to 
immediately close the nested appender by name. Here is the code:

  AppenderTracer tracer = siftingAppender.getAppenderTracer();
  tracer.stopAndRemoveNow(someName);

where 'someName' corresponds to the appropriate discriminator value.

Unfortunately, the getAppenderTracer() in SiftingAppender class and the 
stopAndRemoveNow() method in AppenderTracer do not exist in logback 0.9.18. I'll 
add them shortly to 0.9.19.

HTH,

On 17/03/2010 2:10 PM, Matthias Kretschmar wrote:
> Hi @ all,
>
> I have an application handeling commands. Every command is created,
> executed and deleted at the end.
> For this, I use a SiftingAppender, with the commandId from the MDC as
> discriminator.
> As I understand the concept of the SiftingAppender, it creates a new
> Appender (in my case FileAppenders that write to seperate folders) for
> every command, that is created. So far, so good.
>
> Now I want to delete my command, inclusive its working directory with
> its logs. There I get a exception, that the directory cannot be deleted,
> because files are still in use. I assume, that the logfile cannot be
> deleted, because the Stream of the FileAppender still is open. Is there
> a possibility to close the stream. I would prefer a solution, where the
> FileAppender is closed or detached only by use of slf4j-api. But I
> believe, that I also have to use logBack in my source code.
>
> Until now, I succeeded getting the SiftingAppender, but I couldn't get
> the FileAppender.
>
> Matthias



More information about the Logback-user mailing list