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 "John Vasileff (JIRA)" <ji...@apache.org> on 2011/09/19 03:18:09 UTC

[jira] [Reopened] (LOG4J2-50) Incorrect %C output (FQCN)

     [ https://issues.apache.org/jira/browse/LOG4J2-50?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

John Vasileff reopened LOG4J2-50:
---------------------------------


Actually, in the original report I was using log4j12-api.  It was a puzzle to determine why your test passed while mine failed.  My code looked like:

import org.apache.log4j.Category;

private static final org.apache.logging.log4j.Logger log4j2Logger = LogManager.getLogger(Log4j2Testing.class.getName());
private static final Category category2 = Category.getInstance(Log4j2Testing.class);

...

As it turns out, the order in which the loggers were created changed the result.  See LOG4J2-51.  I was able to get correct results by flipping the order of the getLogger/getInstance calls.

In your patch for the SLF4J API, the problems with slf4jLogger are resolved since SLF4JLogger no longer extends AbstractLogger.  But a problem remains with the getFQCN() logic.

I have a patch to correct this.  It builds on the patches in LOG4J2-51.  Note: LOG4J2-51 temporarily causes your new test case to fail, but the forthcoming patch fixes the root cause.

> Incorrect %C output (FQCN) 
> ---------------------------
>
>                 Key: LOG4J2-50
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-50
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>            Reporter: John Vasileff
>            Assignee: Ralph Goers
>
> The fully qualified class name must be set correctly to support conversions like %C.  In some cases, %C information is incorrect.  I think this is related to AbstractLogger allowing getFQCN() to be overridden.  Log methods handled by AbstractLogger should have AbstractLogger's FQCN, not that of the subclass.
> Example:
> slf4jLogger.info("slf4jLogger test %C."); // works; SLF4JLogger overrides this method
> slf4jLogger.info("slf4jLogger test %C.", t); // fails with '?'; handled by AbstractLogger
> category2.info("category test %C"); // fails with 'o.a.l.Category'
> Output:
> INFO Log4j2Testing [main] slf4jLogger test %C.
> INFO ? [main] slf4jLogger test %C.
>  java.lang.Throwable
> 	at Log4j2Testing.main(Log4j2Testing.java:22)
> INFO o.a.l.Category [main] category test %C

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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