Whatever is the logging framework (logback, log4j, commons-logging, java.util.logging, ...), a logger should be:

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();
  }
}