
org.sonar.l10n.squidjava.rules.squid.S1312.html Maven / Gradle / Ivy
Whatever is the logging framework (logback, log4j, commons-logging, java.util.logging, ...), a logger should be:
private
: Never be accessible outside of its parent class. If another class needs to log something, it should instantiate its own logger.
static
: Not dependent on an instance of a class (an object). When logging something, contextual information can of course be provided in the messages but the logger should be created at class level to prevent creating a logger along with each object.
final
: Be created once and only once per class.
Noncompliant Code Example
public class Foo {
public Logger logger = LoggerFactory.getLogger(Foo.class); // Noncompliant
public void doSomething() {
/* ... */
}
}
public class Bar {
public static void main(String[] args) {
Foo foo = new Foo();
foo.logger.info("Program started");
foo.doSomething();
}
}
Compliant Solution
public class Foo {
private static Logger LOGGER = LoggerFactory.getLogger(Foo.class); // Compliant
public void doSomething() {
/* ... */
}
}
public class Bar {
private static Log LOGGER = LogFactory.getLogger(Bar.class); // Compliant
public static void main(String[] args) {
LOGGER.info("Program started");
Foo foo = new Foo();
foo.run();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy