Inspectopedia Help

Logger initialized with foreign class

Reports Logger instances that are initialized with a class literal from a different class than the Logger is contained in. This can easily happen when copy-pasting some code from another class and may result in logging events under an unexpected category and cause filters to be applied incorrectly.

A quick-fix is provided to replace the foreign class literal with one from the surrounding class.

Example:

public class Paramount { protected static final Logger LOG = Logger.getLogger(Critical.class); // ... other fields and methods }

After the quick-fix is applied:

public class Paramount { protected static final Logger LOG = Logger.getLogger(Paramount.class); // ... other fields and methods }

Configure the inspection:

  • Use the table to specify the logger factory classes and logger factory methods recognized by this inspection.

  • Use the Ignore loggers initialized with a superclass option to ignore loggers that are initialized with a superclass of the class containing the logger.

  • Use the Ignore loggers in non-public classes to only warn on loggers in public classes.

Inspection options

Option

Type

Default

Table

None

Logger Factory Class Name

TableColumn

[org.apache.log4j.Logger, org.slf4j.LoggerFactory, org.apache.commons.logging.LogFactory, java.util.logging.Logger, org.apache.logging.log4j.LogManager]

Logger Factory Method Name

TableColumn

[getLogger, getLogger, getLog, getLogger, getLogger]

Ignore loggers initialized with a superclass

Checkbox

false

Ignore loggers in non-public classes

Checkbox

false

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Java, 233.SNAPSHOT

Last modified: 13 July 2023