Inspectopedia Help

Logging call not guarded by log condition

Reports logging calls that are not surrounded by a guard condition. The evaluation of a call's arguments can be expensive. Surrounding a logging call with a guard clause prevents that cost when logging is disabled for the level used by the logging statement. This is especially useful for the least serious level (trace, debug, finest) of logging calls, because those are most often disabled in a production environment.

Example:

public class TestObject { void test(Object object) { LOG.debug("some logging " + expensiveCalculation(1)); } }

After a quick-fix is applied:

public class TestObject { void test(Object object) { if(LOG.isDebugEnabled()){ LOG.debug("some logging " + expensiveCalculation(1)); } } }

This inspection supports Log4j2 and the SLF4J logging frameworks (except builders).

Locating this inspection

By ID

Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.

LogStatementNotGuardedByLogCondition
Via Settings dialog

Path to the inspection settings via IntelliJ Platform IDE Settings dialog, when you need to adjust inspection settings directly from your IDE.

Settings or Preferences | Editor | Inspections | JVM languages | Logging

New in 2024.2

Inspection options

Here you can find the description of settings available for the Logging call not guarded by log condition inspection, and the reference of their default values.

Warn on

Default setting: debug level and lower

Other available settings:

  • all log levels

  • warn level and lower

  • info level and lower

  • trace level

Process unguarded logging calls with constant messages

Not selected

Inspection Details

By default bundled with:

IntelliJ IDEA 2024.2, Qodana for JVM 2024.2,

Can be installed with plugin:

Java, 242.22892

Last modified: 11 September 2024