[
https://issues.apache.org/jira/browse/SOLR-8324?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15019122#comment-15019122
]
Uwe Schindler edited comment on SOLR-8324 at 11/21/15 12:02 AM:
----------------------------------------------------------------
You can do this since Java 7, I now use this anywhere. The code uses a "trick".
You need a so-called caller-sensitive method (marked @CallerSensitive) and
somehow get the class it detected. 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):
You can do this since Java 7, I now use this anywhere. The code uses a "trick".
You need a so-called caller-sensitive method (marked @CallerSensitive) and
somehow get the class it detected. 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]