13 Mart 2018 Salı

SLF4J - Simple Logging Facade for Java

Maven
SLF4J bir sürü backend ile kullanılabilir. logback-classic, log4j, JUL (java.util.logging), JCL (Jakarta Commons Logging) vs.

logback-classic
Logback yazısına taşıdım.

SLF4J ile logback-classic backend'i kullanmak için Maven'da şöyle yaparız.
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
</dependency>
SLF4J Logger Sınıfı
info metodu
Çalışma mantığı şöyle.
public void log(int logLevel, String ... msg) {
  if (logLevel >= currentLogLevel) {
    for (String m : msg) {
      ...
    }
  }
}
// calling
log(2, "text1", var1, "text2");
String birleştirmekten kaçtığı için şöyle yapmamalıyız.
logger.info("List size is: " + list.size());
String birleştirme yapmadığı için çağrının maliyeti düşük. Açıklaması şöyle
You can turn off logging entirely by setting the level of the root logger to Level.OFF, the highest possible level. When logging is turned off entirely, the cost of a log request consists of a method invocation plus an integer comparison. On a 3.2Ghz Pentium D machine this cost is typically around 20 nanoseconds.
info metodu - template string
Template yeri için {} karakterleri kullanılır.

Örnek - 1 parametre
Template string yöntemini kullanarak şöyle yaparız.
log.info("Something like this {}", variable);
Şöyle yaparız.
Object entry = new SomeObject(); 
logger.debug("The entry is {}.", entry);
Örnek - 2 parametre
Şöyle yaparız.
log.info("ID: {} NAME: {}", id, name);
Şöyle yaparız.
log.info("A is {} and B is {}. The difference is {}.", a, b, a-b);
Örnek - 3 parametre
Şöyle yaparız.
Object[] paramArray = {newVal, below, above};
logger.debug("Value {} was inserted between {} and {}.", paramArray);


SLF4J LoggerFactory Sınıfı
getLogger metodu
Şöyle yaparız.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main
{
  static final Logger logger = LoggerFactory.getLogger(Main.class);

  public static void main(String[] args)
  {
    logger.info("Main started");
  }
}

Hiç yorum yok:

Yorum Gönder