logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yair Ogen <yairo...@gmail.com>
Subject Re: Log file per thread
Date Sun, 03 May 2009 14:43:59 GMT
Hi,

I can't say I tried this myself but let's assume you have this code:

public void run()
{
  String id = ...; // thread name or whatever
  Logger logger = ...; // Create a logger with a basename and the id
  ThreadLocal<Logger> loggerThreadLocal = new ThreadLocal<Logger>();
  loggerThreadLocal.set(logger);
  try
  {
    // ...
    ((Logger)loggerThreadLocal.get()).info...
  }
  finally
  {
    // nothing here. when the thread dies the thread local is cleaned up for
you.
  }
}


well this is a pseudo of my idea. Again - haven't tried this...

good luck.



On Sun, May 3, 2009 at 3:04 PM, Kaspar Fischer <fischerk@inf.ethz.ch> wrote:

> Yair, first of all, thanks for your answer.
>
>  Ho about creating a Logger in ThreadLocal with a unique name that is based
>> on the thread name?
>>
>
> Apologies for this basic question, but how can I do this?
>
> Just passing a new name to getLogger()?
>
>  http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html
>
> More importantly, how can I dispose of the logger? Otherwise the number of
> open loggers grows with the number of threads run.
>
> Thanks,
> Kaspar
>
>
>  On Sat, May 2, 2009 at 5:53 PM, Kaspar Fischer <fischerk@inf.ethz.ch>
>> wrote:
>>
>>  Dear list,
>>>
>>> I am looking for a way to create a log file per thread (actually, per
>>> Quartz job that gets run).
>>>
>>> I've googled quite a bit and found a few approaches, in particular
>>> KeyFileAppender [1]. All I have seen seem to rely on the MDC and
>>> KeyFileAppender seems to have a resource leak [2].
>>>
>>> I am wondering whether there is a simply way to programmatically create,
>>> at
>>> the beginning of my thread, a logger with a given name and closing it at
>>> the
>>> end of the thread. Has anybody accomplished something like this?
>>>
>>> public void run()
>>> {
>>>   String id = ...; // thread name or whatever
>>>   Logger logger = ...; // Create a logger with a basename and the id
>>>   try
>>>   {
>>>     // ...
>>>   }
>>>   finally
>>>   {
>>>     logger.close(); // Something like this is needed to make sure
>>>                     // old logs do not keep hanging around
>>>   }
>>> }
>>>
>>> Many thanks,
>>> Kaspar
>>>
>>> [1] https://issues.apache.org/bugzilla/show_bug.cgi?id=19597
>>> [2]
>>> http://www.mail-archive.com/log4j-user@logging.apache.org/msg07295.html
>>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-user-help@logging.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message