17 Mart 2016 Perşembe

Java-logback entegrasyonu

Merhaba bu yazımda sizlere Java-logback entegrasyonundan bahsedeceğim.
Logback  Ceki Gülcü tarafından tasarlanan ve log4j mimarisinin devamı olan bir loglama sistemidir.  Logback  şuan için  popüler ve kullanımı kolaydır.

Logback’i projelerimizde kullanabilmemiz için slf4j-api, logback-core ve logback-classic jar dosyalarını Java projemize dahil etmemiz gerekiyor.  Ben bu işlemi yine maven aracılığıyla yaptım. dependency tanımları aşağıdadır:


Slf4j-api
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.12</version>
</dependency>


logback-classic
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.3</version>
</dependency>


logback-core
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.1.3</version>
</dependency>


üstteki dependency leri  projemizdeki pom.xml dosyasına dahil  ettikten sonra logback’i konfigüre etmeye başlayabiliriz. Logback,  classpath te varsayılan durumda  logback.xml yada logback-test.xml dosyası arayacaktır.  Bu dosyaları oluşturarak içerisinde logları nereye yazacağımızı ve hangi seviyede loglama yapacağımızı belirtiyoruz.



Yukarıdkai işlemleri yaptıktan sonra geriye logback’i kullanmak kalıyor.
Loglama yapmak istediğimiz class’a giderk
private static final Logger logger = LoggerFactory.getLogger(Run.class);

şeklinde tanımlama yapıyoruz. getLogger methoduna hangi class'ı loglamak istediğimizi yazıyoruz.  Bu tanımlamadan sonra  logger.[log-level]  şeklinde istediğimiz logları yazdırabiliriz.

Örnek:
logger.info("info");

logger.debug("debug");

logger.error("error");

logger.warn("warning");

logger.trace("trace");


kaynak dosyalar(github) : indirmek için tıklayın





Javada Bilinmeyen Tiplerdeki Parametrelerle Çalışmak- Varargs(Variable Arguments)

Merhaba,
Bu yazımda sizlere javada varargs kullanımından bahsedeceğim.
Diyelim ki  bir method tanımlamak istiyorsunuz ve bu method bazen String bazen Integer parametre ile çağrılacak. Hatta bazı durumlarda hem String hem Integer parametreyi aynı anda göndermek isteyeceksiniz.  Yani metodun hangi tipteki parametre ile çağrılacağını bilmiyorsunuz. Eğer sadece bir bilinmeyen tipte sadece  bir  parametre yollayacak olsaydık bu  durumda yapmamız gereken işlem metodu Object tipinde bir parametre ile  çağırmak olacaktı.  Ancak birden fazla ve farklı tiplerdeki parametre(String,Integer,boolean.. vs aynı anda) ile aynı anda göndermek istediğimizde bu tanımlama işimize yaramayacaktı.   İşte tam elimiz kolumuz bağlandı mı diye düşünürken  varargs kullanımı  yardımımıza konuşuyor.   Object... (üç nokta array olduğunu belirtiyor) tipinde bir parametre alan foo adında bir method tanımlıyoruz.  Ve bu metodu istediğimiz tiple çağırıp kullanabiliyoruz. Aşağıda örnek bir kodlama yaptım incelemenizi tavsiye ederim. Bir  çok projede bu kullanım işinize yarayacaktır.

Kod örneği:
package com.lvt;

/**
 * Created by leventyildiz on 17/03/16.
 */

public class Run {

    public static void main(String[] args) {

        foo("Levent", 123, true);
    }

    public static void foo(Object... objects) {

        for (Object s : objects) {

            System.out.println(s.toString());

        }
    }
}

çıktı:
Levent
123
true


javada String class’ı içerisinde kullanımı.
public static String format(Locale l, String format, Object... args) {
   
return new Formatter(l).format(format, args).toString();
}


Formatter class’ında ki kullanımından bir örnek:
public Formatter format(String format, Object ... args) {

    return format(l, format, args);

}


String classıyla bir örnek yapalım:
String str = String.format("integer values: %d - %s", 5,"aliveli");

System.out.println(str);

Burada String class’ı içindeki format methoduna hem String hem Integer parametreyi aynı anda gönderdik.

Çıktı:
integer values: 5 - aliveli