Description
Use a class' canonical name instead of name to create its logger name.
Say you have loggers built with Classes for which getName() give you:
- com.example.app.A
- com.example.app.A$AS1
- com.example.app.A$AS2
- ...
- com.example.app.A$ASN
Before 2.9.0: You you set the root logger to WARN and com.example.app.A to INFO, then you get INFO events for A but you do not get INFO messages from AS1, AS2, and so on. There is no way to set all A$ASx loggers to the same level at the same time.
In 2.9.0 now, converting a Class to a logger name uses getCannonicalName() such that the logger names are:
- com.example.app.A
- com.example.app.A.AS1
- com.example.app.A.AS2
- ...
- com.example.app.A.ASN
When you set com.example.app.A to INFO, then you get INFO events for A, AS1, AS2, and so on.
The dev ML thread is:
Note post 2.9.0: If the class canonical name is null, then use the class name.
Attachments
Attachments
Issue Links
- relates to
-
LOG4J2-2050 NullPointerException in LogManager.getLogger when called from anonymous class initializer
- Closed