7 Ağustos 2017 Pazartesi

Loglama ve log4j

Loglama kavramı nedir?

 Bir sistemin çalışma zamanında durumunu saklama durumuna denir. Sistemde yaşanılan hatalar yada yapılan işleri incelemede kullanılabilir. Logların kullanışlı olması anlaşır olmasına ve loglanma görünümüne bağlıdır. Anlaşılabilir bir log debug, bakım ve geçmişi kontrol etme gibi konularda sistem yöneticisi veya programcıya yardımcı olur.


Log4j nedir?

Apache Yazılım Lisansı altında dağıtılan, Java ile yazılmış hızlı, güvenilir ve esnek bir API'dir. Java'da yazılmasına rağmen C, C++, Python, Perl gibi popüler dillerde de kullanılır.


Yapılandırma

log4j log4j.properties dosyasından kolayca yapılandırılabilir. Bu yapılandırma dosyası şu şekildedir.


# Root logger option
log4j.rootLogger=INFO, file, stdout

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\ProjectHome\logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Buna ek olarak istenildiği durumda xml formatında da bu ayarlamalar yapılabilir.

Hadi buradaki bazı satırları açıklığa kavuşturalım.

rootLogger satırında INFO log seviyesini belirtir. file ve stdout ise log dosyalarının nereye yazdırılacağını belirtir ki örneğimizde bu bir dosya(file) ve standart çıktı(stdout).

appender komutu ile logun ekleneceği seçeneği belirtir. File ekiyle çıktının konumunu belirtiriz. İstersek bir çevresel değişken tanımlayıp burada kullanabiliriz. ConversionPattern ile dosyamıza çıktımızın hangi düzende basılacağını ayarlıyoruz.

Devamında ise benzer komutları standart çıktı için ayarlıyoruz.

Log seviyeleri şu şekildedir.
ALL > DEBUG > INFO > WARN > ERROR > FATAL

Burada büyükten küçüğe doğru gittikçe kapsam azalır. Loglama yaparken seviyelere dikkat etmek önemlidir. Kullanıcının görmemesi veya görmesine gerek olmayan logları onlara göstermemek gerekir. Sistemi incelemek durumunda log modu değiştirilebilir ve o mod ve altında kapsadığı modlarda basılan loglar incelenebilir. 



import org.apache.log4j.Logger;

public class log4jDeneme {

  final static Logger logger = Logger.getLogger(log4jDeneme.class);

  public static void main(String[] args) {
        logger.debug("debug log message");
        logger.info("info log message");
        logger.warn("warn log message");
        logger.error("error log message");
 
 }

}

log4j.properties dosyasındaki ayarlarımızdaki info seviyesine göre kodumuzu çalıştırdığımızı düşünürsek, info,warn ve error logları basılırken debug basılmayacak. Eğer debug seviyesine geçersek bu da basılacak. Debug moda geçmek için log4j.properties dosyasındaki info yu debug yapmak yeterli olacak.

Temel seviyede bahsedeceklerim bu kadar. Yardımcı olması dileğiyle.
İyi günler.

1 Ağustos 2017 Salı

GIT ve TFVC


TFS nedir?

Microsoft tarafından 2006 yılında yayınlanan planlama, kodlama, test etme vb. yazılım geliştirme yönleriyle ilgilenen bir uygulama yaşam döngüsüdür. TFVC ise TFS'nin sunduğu bir versiyon kontrol sistemidir.


Git nedir?

Linux çekirdeğini geliştiren topluluğun BitKeeper'ın geliştiricileri ile aralarının bozulması sonucu Linus Torvalds 'ın liderlik ettiği bir topluluk tarafından 2005 yılında geliştirilmeye başlayan bir versiyon kontrol sistemidir.


İki farklı ürününde versiyon kontrol sistemlerin olarak birbirlerine göre eksi ve artıları vardır.  Şimdi bunları inceleyelim.

Farklılıklar


Erişilebilirlik

TFVC çevrimdışı erişmeye izin vermez. İnternet bağlantınızın kesilmesi veya serverın çökmesi durumunda dosyaları kontrol edemez ve değiştiremezsiniz. GIT bunu destekler.

Ek özellikler

TFVC otomatik yapılar, testler, analitik ve grafik çizim, manuel test izleme gibi birçok ek özelliğe destek verirken GIT bu özelliklerin hiçbirini destek vermez.
Aynı zamanda TFVC Microsoft'un çoğu ürünü ile ilişki içindedir.


Çalışma ortamı

TFVC dosyaları izlemek ve sürümlemek için tek ve merkezi bir depo kullanır. TFVC de yerel olarak yapılan bir değişiklik genellikle merkezi sunucuda da yapılır ve diğer kullanıcılar bu değişiklikleri alabilir.
GIT ise bir dosyayı yerel olarak izleme, sürümleme gibi hizmetler verir. Kullanıcılar yapılan değişikleri push ve pull ile birbiriyle paylaşır.

TFVC dosya sistemi temel yapısında çalışır.
GIT değişiklik temel yapısında çalışır.


Maliyet

Çeşitli kaynaklardan dallanma TFVC'de çok maliyetli ve yüklü bir işken GIT'de bu çok hızlı ve hafifdir.

TFVC lisans ücreti gerektirir ve sadece Microsoft tarafından geliştirilir. GIT ücretsizdir, şuan itibariyle 1107 kişinin katkısıyla geliştirilmeye devam etmekte olup kaynak kodu açık bir sistemdir.


Branch yapısı

TFVC'de bir branch geliştirilmesi, kullanıcının dizininin komple bir kopyasını almasına anlamına gelirken GIT'de sadece referans ile farklılıklar tutulur.

TFVC birbiriyle ilişkili olmayan dalların birleşmesine izin vermezken GIT bu izni verir.


Bu arada TFS, TFVC nin yanında artık Git versiyon kontrol sistemine de destek veriyor. Karar size kalmış.

İyi günler.

LibreOffice, Libreoffice Online Derleme ve Yama Gönderme Süreci

    Libreoffice bir masaüstü ofis paketidir. Yıllar boyunca farklı adlarda geliştirilmiş şu an ise  Libreoffice adıyla devam etmektedir. Lib...