[
https://issues.apache.org/jira/browse/SOLR-8324?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15019131#comment-15019131
]
Uwe Schindler edited comment on SOLR-8324 at 11/21/15 12:02 AM:
----------------------------------------------------------------
I would not do this. Creating a stack trace for every class is slow and not
helpful if Hotspot optimized stack traces away (may happen!).
The following code fragment is copypaste safe and works since Java 7 (and fast
like hell because it uses the {{@CallerSensitive}} internal annotation in Java).
The code uses a "trick": Since Java 7 you can use MethodHandles.lookup(). This
returns a lookup for the class that called the Lookup factory. The lookup has
the class it was created for - and voilá you can use it :-)
{code:java}
import java.lang.invoke.MethodHandles;
//...
private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
{code}
I use that pattern everywhere in my code now. Thanks also to the following blog
post:
http://marxsoftware.blogspot.de/2013/01/portable-logger-names-with-java7.html
was (Author: thetaphi):
I would not do this. Creating a stack trace for every class is slow and not
helpful if Hotspot optimized stack traces away (may happen!).
The following code fragment is copypaste safe and works since Java 7 (and fast
like hell because it uses the {{@CallerSensitive}} internal annotation in Java).
The code uses a "trick": Since Java 7 you can use MethodHandles.lookup(). This
returns a lookup for the class that called the Lookup factory. The lookup has
the class it was created for - and voilá you can use it :-)
{code:java}
import java.lang.invoke.MethodHandles;
//...
private final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
{code}
I use that pattern everywhere in my code now. Thanks also to the following blog
post:
http://marxsoftware.blogspot.de/2013/01/portable-logger-names-with-java7.html
> Logger Untanglement
> -------------------
>
> Key: SOLR-8324
> URL: https://issues.apache.org/jira/browse/SOLR-8324
> Project: Solr
> Issue Type: Improvement
> Reporter: Mike Drob
> Fix For: Trunk
>
>
> I propose that we do a thorough examination of how we use loggers over the
> whole project. There are many instances of loggers being shared between
> classes that make troubleshooting difficult, and we can probably clean up
> some of the usage that has accumulated over numerous code moves and
> refactorings.
> Because this has the potential to scope wildly out of control, I would like
> to break the work down into several subtasks.
> * Loggers should be declared all three of {{private static final}} when
> possible. This both helps avoid the situations described in later bullets,
> and might provide a very minor performance improvement.
> * Distinct classes should not use loggers from other classes, unless they are
> explicitly delegated to do so.
> * Subclasses should declare their own loggers instead of relying on loggers
> from parent classes.
> * Examine if forbidden-api or some other tool(s) can help maintain this, once
> we reach a desired state.
> Each bullet might turn into one or more tasks, depending on how invasive
> individual changes become.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]