Description
While logging a message using lambda expressions. If i call a method within the log message (i.e logger.info(() -> "foo" +bar()) which also logs messages, those logs within the called method will reference the line number and method name of the method which invoked it.
Running the following code demonstrates this issue:
TestingLogging.java
private static final Logger LOGGER = LogManager.getLogger(TestingLogging.class); public static String foo(){ LOGGER.info("bar"); return "foo"; } public static void main(String[] args){ System.out.println("correct method reference: "); LOGGER.info(foo()); System.out.println("\nincorrect method reference: "); // causes logging in foo to reference // this line number and method (main) LOGGER.info(() -> foo()); }
Attachments
Issue Links
- relates to
-
LOG4J2-2531 Using method references to Logger methods leads to wrong source file and line number in log entry
- Resolved