You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Remko Popma (JIRA)" <ji...@apache.org> on 2013/12/12 02:25:07 UTC

[jira] [Commented] (LOG4J2-467) Thread name caching in async logger incompatible with use of Thread.setName()

    [ https://issues.apache.org/jira/browse/LOG4J2-467?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13845962#comment-13845962 ] 

Remko Popma commented on LOG4J2-467:
------------------------------------

Anthony, thanks for your feedback.
Caching the thread name did give a significant performance improvement, so I would like to keep it as the default,
but making it configurable is certainly possible.

I'm still thinking about how to do this. (Perhaps do this as part of LOG4J2-321.)

Do you need this to be configurable on a per-logger basis or is that a nice-to-have and would a global setting work for you?

> Thread name caching in async logger incompatible with use of Thread.setName()
> -----------------------------------------------------------------------------
>
>                 Key: LOG4J2-467
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-467
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0-beta9
>         Environment: Debian Squeeze amd64
> OpenJDK 7u25
>            Reporter: Anthony Baldocchi
>
> AsyncLogger caches a thread's name in a thread-local info variable.  I make use of a thread pool where the submitted Runnables call Thread.setName() at the beginning of their task and the thread name is included in the log message.  For an example of this behavior, see org.jboss.netty.util.ThreadRenamingRunnable in Netty 3.x.  With the cached thread name, the log messages will contain whatever name the thread had when it logged for the first time and so long as the thread doesn't terminate (such as in a core pool thread), all log messages involving this thread will be erroneous.  If Thread.getName has a significant performance impact for async logging, I would be satisfied if this behavior were configurable, perhaps on a per-logger basis, so that the penalty only needs to be taken by users who make use of Thread.setName()



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org