You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Ralph Goers (Jira)" <ji...@apache.org> on 2021/03/01 03:54:00 UTC

[jira] [Commented] (LOG4J2-2953) Method name does not print correctly

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

Ralph Goers commented on LOG4J2-2953:
-------------------------------------

No. The logic in calcLocation is correct. The FQCN is the name of the class the application calls to perform logging. That class may call methods within itself. This logic is looking for the class that called the FQCN. So it walks the stack looking for the FQCN. It then skips all the stack entries in that class until it lands on an FQCN that is not that class. That is the one it will return.

> Method name does not print correctly
> ------------------------------------
>
>                 Key: LOG4J2-2953
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-2953
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Appenders
>    Affects Versions: 2.13.3
>         Environment: Windows 10, Java 1.8.0_251
>            Reporter: Deepak Narayan
>            Priority: Minor
>
> My log4j configuration has the following layout:
>  
> {code:java}
> <Property name="appenderPatternLayout">YF:%d{yyyy-MM-dd HH:mm:ss.SSS}:%5p (%c{1}:%M) - %m%n</Property>
> {code}
>  
>  
> A log message was created by the method {color:#de350b}MIRunDashboardAction<T>.execute{color}. The FQCN of the class was {color:#de350b}com.hof.mi.web.action.MIRunDashboardAction{color}. The stack trace:
>  
> {noformat}
> StackLocator.calcLocation(String) line: 186
> StackLocatorUtil.calcLocation(String) line: 78
> LoggerConfig.log(String, String, Marker, Level, Message, Throwable) line: 409 
> AwaitCompletionReliabilityStrategy.log(Supplier<LoggerConfig>, String, String, Marker, Level, Message, Throwable) line: 63
> Logger.logMessage(String, Level, Marker, Message, Throwable) line: 153 
> Logger(Category).forcedLog(String, Priority, Object, Throwable) line: 388 
> Logger(Category).log(String, Priority, Object, Throwable) line: 499 
> YFAdvancedLogger.log(YFLogger$YFLogLevel, Object, Throwable, boolean) line: 39 
> YFAdvancedLogger(YFLogger).log(YFLogger$YFLogLevel, Object, Throwable) line: 145 
> YFAdvancedLogger(YFLogger).info(Object, Throwable) line: 113 
> YFAdvancedLogger(YFLogger).info(Object) line: 109 
> // Logger called from here
> MIRunDashboardAction<T>.execute(YFActionMapper<T>, HttpServletRequest, HttpServletResponse) line: 73 
> MIFormBindingController(FormBindingSpringController<T>).handleDefault(T, BindingResult, RedirectAttributes, HttpServletRequest, HttpServletResponse) line: 109 
> MIFormBindingController.handle(MIForm, BindingResult, RedirectAttributes, HttpServletRequest, HttpServletResponse) line: 57 {noformat}
>  
> However, the method printed in the log was one level lower than the actual one (see stack above).
> {noformat}
> YF:2020-10-28 19:26:54.231: INFO (MIRunDashboardAction:handleDefault) - [42] [4E353F83] [/RunDashboard.i4] MIRunDashboardAction entered{noformat}
>  
>  
> I think the bug is in line 187 of StackLocator.calcLocation().
>  
> {code:java}
> if (found && !fqcnOfLogger.equals(className)) {
>     return stackTrace[i]; // Should this have been i-1 ?
> }
> {code}
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)