[ https://issues.apache.org/jira/browse/LOG4J2-1124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14900001#comment-14900001 ]
Hüseyin Kartal commented on LOG4J2-1124: ---------------------------------------- I assume if that is the intended behavoir than the javaDoc should be changed to @return The Logger for the *declaring* class. > LogManager.getLogger() > ---------------------- > > Key: LOG4J2-1124 > URL: https://issues.apache.org/jira/browse/LOG4J2-1124 > Project: Log4j 2 > Issue Type: Bug > Components: API > Affects Versions: 2.3 > Environment: win64 java8 osgi > Reporter: Hüseyin Kartal > Fix For: 2.4 > > > As in log4j2 api the LogManager.getLogger() call should return a logger for > the calling class. > {code} > /** > * Returns a Logger with the name of the calling class. > * @return The Logger for the calling class. > * @throws UnsupportedOperationException if the calling class cannot be > determined. > */ > public static Logger getLogger() { > return getLogger(ReflectionUtil.getCallerClass(2)); > } > {code} > But in the following example the returned logger is get for the declaring > AbstractLogger class and not as assumed for the calling Classes > InstanceLogger and InstanceLogger2. > {code} > public class LogTest { > protected class AbstractBase { > Logger logger = LogManager.getLogger(); > public AbstractBase() { > super(); > logger.info("init"); > } > void log(String s) { > logger.info(s); > } > } > protected class InstanceBase extends AbstractBase { > @Override > void log(String s) { > super.log(s); > logger.info(s); > } > } > protected class InstanceBase2 extends AbstractBase { > @Override > void log(String s) { > super.log(s); > logger.info(s); > } > } > @Test > public final void testLoggerInstance() { > new InstanceBase().log("logging"); > new InstanceBase2().log("logging"); > } > } > {code} > The Output is > {code} > 2015-09-18 13:51:21,830 INFO - main - > d.z.w.l.LogUtilsTest$AbstractBase - [] * init - > > 2015-09-18 13:51:21,831 INFO - main - > d.z.w.l.LogUtilsTest$AbstractBase - [] * logging - > > 2015-09-18 13:51:21,831 INFO - main - > d.z.w.l.LogUtilsTest$AbstractBase - [] * logging - > > 2015-09-18 13:51:21,831 INFO - main - > d.z.w.l.LogUtilsTest$AbstractBase - [] * init - > > 2015-09-18 13:51:21,831 INFO - main - > d.z.w.l.LogUtilsTest$AbstractBase - [] * logging - > > 2015-09-18 13:51:21,831 INFO - main - > d.z.w.l.LogUtilsTest$AbstractBase - [] * logging - > > {code} > A workaround is to call *LogManager.getLogger(getClass())* but i assume that > in most cases the logger for the calling class is needed so it would be nice > to change the behaviour of LogManager.getLogger(). > The output of the workaround is > {code} > 2015-09-18 13:53:50,538 INFO - main - > d.z.w.l.LogUtilsTest$InstanceBase - [] * init - > > 2015-09-18 13:53:50,538 INFO - main - > d.z.w.l.LogUtilsTest$InstanceBase - [] * logging - > > 2015-09-18 13:53:50,538 INFO - main - > d.z.w.l.LogUtilsTest$InstanceBase - [] * logging - > > 2015-09-18 13:53:50,543 INFO - main - > d.z.w.l.LogUtilsTest$InstanceBase2 - [] * init - > > 2015-09-18 13:53:50,543 INFO - main - > d.z.w.l.LogUtilsTest$InstanceBase2 - [] * logging - > > 2015-09-18 13:53:50,543 INFO - main - > d.z.w.l.LogUtilsTest$InstanceBase2 - [] * logging - > > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org