CodeGym/Java Kursu/Modül 3/Etkinlik seviyeleri

Etkinlik seviyeleri

Mevcut

3.1 Olay seviyelerinin listesi

Günlüğe kaydetme, program çalışırken meydana gelen herhangi bir olayı kaydetme işlemidir. Bir programcı olarak göreviniz, record everything importantçünkü o zaman, productiongarip ve/veya ciddi hatalar olduğunda, bu günlüklerden başka hiçbir şeyiniz olmayacak.

Bununla ilgili tüm bilgilere ve aramaların tüm geçmişine sahipseniz, herhangi bir hata birçok kez daha hızlı ortadan kaldırılacaktır. Ancak buradan basit bir sonuç çıkar - genel olarak her şeyi günlüğe kaydetmek için: tüm yöntemlerin çağrıları, tüm parametrelerin değerleri.

Bu da bir seçenek değildir - çok fazla bilgi, çok az bilgi kadar kötüdür. Akıllı günlük kaydına ihtiyacımız var. İnsan tarafından insan için yapılmıştır. Ve burada günlük kaydıyla ilgili ilk gerçeğe geliyoruz - günlükteki tüm girişler, oluşturuldukları sırada bile kategorilere ayrılır.

Etkinlik düzeylerinin listesi

Günlüğe bir olay yazarken programcı, bu bilginin ne kadar önemli olduğuna kendisi karar vermelidir. Olayın önem derecesi, mesajın yazarı tarafından seçilir. log4jGünlüğe kaydedilen bilgilerin önemine ilişkin 5 düzey vardır :

  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL

Aşağıda onlar hakkında daha ayrıntılı olarak anlatacağız.

3.2 HATA AYIKLAMA

Seviye DEBUGen az önemli olarak kabul edilir. Günlüğe bu düzeyde önemle yazılan bilgilere yalnızca uygulama hata ayıklaması sırasında ihtiyaç duyulur. Hata ayıklama sırasında ihtiyaç duyulan bilgileri günlüğe kaydetmek için yöntem kullanılır debug().

Örnek:

class Manager {
    private static final Logger logger = LoggerFactory.getLogger(Manager.class);

    public boolean processTask(Task task) {
        logger.debug("processTask id = " + task.getId());
        try {
            task.start();
            task.progress();
            task.complete();
            return true;
        } catch (Exception e) {
            logger.error("Unknown error", e);
            return false;
        }
    }
}

Dikkat edin, method debugyöntemin en başındadır (yöntemin henüz bir şey yapacak zamanı olmamıştır) ve yönteme iletilen değişkenin değerini günlüğe yazar. Bu, yöntemin en yaygın kullanım durumudur debug().

3.3 BİLGİ ve UYARI

Sonraki iki seviye INFOve WARN. Onlar için iki yöntem vardır - info()ve warn().

Düzey INFOyalnızca bilgilendirme mesajları için kullanılır: şu ve bu olur. Günlükteki bir hatayı ayrıştırmaya başladığınızda, arka planını okumak çok yararlı olabilir. Yöntem bunun için mükemmeldir info().

Düzey, uyarıları yazmak için kullanılır ( uyarıWARN kelimesinden ). Genellikle, bu önem düzeyinde, bir şeylerin ters gittiği bilgisi yazılır, ancak program bu durumda ne yapacağını bilir.

Örneğin, bir dosyayı diske yazma sürecinde böyle bir dosyanın zaten var olduğu ortaya çıktı. Burada program bir uyarı (uyarı) kaydedebilir, ancak kullanıcıya bir iletişim kutusu gösterir ve farklı bir dosya adı seçmeyi teklif eder.

Örnek:

class FileManager {
    private static final Logger logger = LoggerFactory.getLogger(FileManager.class);

    public boolean saveFile(FileData file) {
        logger.info(“save the file ” + file.getName());
        boolean resultOK = SaveUtils.save(file);
        if (resultOK) return true;

        logger.warn(“file writing problem ” + file.getName());
        String filename = Dialog.selectFile();
        boolean result = SaveUtils.save(file, filename);
        return result;
    }

3.4 HATA ve ÖLÜMCÜL

Son olarak, en önemli iki günlük kaydı düzeyi ERRORve FATAL. Onlar için aynı adlara sahip özel yöntemler de vardır: error()ve fatal().

Ayrıca hataları iki kategoriye ayırmaya karar verdiler - sıradan hatalar ve ölümcül hatalar . Ölümcül bir hata genellikle bir uygulamanın çökmesine (masaüstü uygulamaları için) veya bir web hizmetinin çökmesine (web uygulamaları için) neden olur.

Başka bir iyi örnek, Windows işletim sistemidir. Programınız az önce çöktüyse, işletim sistemi açısından bu Error. Ve işletim sisteminin kendisi düştüyse ve Windows'un mavi ölüm ekranını görüyorsanız, bu zaten Fatal error.

Java uygulamalarında, olaylar çoğunlukla yükseltilmiş istisnalarla ilişkilendirilir Error. FatalÖrnek:

class Manager {
    private static final Logger logger = LoggerFactory.getLogger(Manager.class);

    public boolean processTask(Task task) {
        logger.debug("processTask id = " + task.getId());
        try {
            task.start();
            task.progress();
            task.complete();
            return true;
        } catch (Exception e) {
            logger.error("Unknown error", e);
            return false;
        }
    }
}

3.5 Neler kaydedilmeli?

Tabii ki, her şeyi arka arkaya kaydetmeye değmez. Çoğu durumda, bu, günlüğün okunabilirliğini keskin bir şekilde kötüleştirir ve sonuçta günlük, okunmak için ilk etapta yazılır.

Ayrıca günlüğe çeşitli kişisel ve finansal bilgiler yazamazsınız. Şimdi bununla kesin ve kolay bir şekilde para cezaları veya davalarla karşılaşabilirsiniz. Er ya da geç, böyle bir kütük yana sızacak ve o zaman sorun olmayacak.

Peki ne kaydedilmeli?

İlk olarak, uygulamanın başlangıcını kaydetmeniz gerekir . Uygulama başladıktan sonra, çalışma modunun ve çeşitli önemli ayarların günlüğe kaydedilmesi önerilir - bu, günlüğün gelecekte okunmasını kolaylaştıracaktır.

İkinci olarak, uygulamanızın birlikte çalıştığı tüm üçüncü taraf hizmetlerinin durumunu günlüğe kaydetmeniz gerekir : posta sistemleri, tüm harici hizmetler. En azından, düzgün çalıştıklarından emin olmak için bağlantı anını sağlamanız gerekir.

Üçüncüsü, tüm istisnaların günlüğe kaydedilmesi gerekir . Bekleniyorlarsa, onlar hakkındaki bilgiler kompakt bir şekilde yazılabilir. İstisnalar hakkında eksiksiz bilgi, bir hata ararken önemli bilgilerin %50-%80'ini verir.

Ayrıca uygulama kapanışını da günlüğe kaydetmeniz gerekir . Uygulama normal bir şekilde sonlandırılmalı ve günlüğe düzinelerce hata atmamalıdır. Genellikle bu yerde takılı kalmış görevler, iş parçacığı havuzuyla ilgili sorunlar veya geçici dosyaları silmeyle ilgili sorunlar bulabilirsiniz.

Güvenlik ve kullanıcı yetkilendirmesi ile ilgili her şeyi günlüğe kaydettiğinizden emin olun . Bir kullanıcı arka arkaya 10 kez oturum açmaya veya şifresini sıfırlamaya çalışırsa, bu bilgilerin günlüklere yansıtılması gerekir.

Eşzamansız görevler hakkında mümkün olduğunca fazla bilgi günlüğe kaydedin - bu tür ileti dizilerinde genellikle istisnalar kaybolur. Eşzamansız bir görev için, başlangıcını ve bitişini günlüğe kaydettiğinizden emin olun. Başarılı bir tamamlama, sorunlu olanla aynı şekilde kaydedilmelidir.

Başka ne? Zamanlanmış görevleri başlatma, depolanan görevleri başlatma SQL-procedures, verileri senkronize etme, dağıtılmış işlemlerle ilgili her şey. Başlangıç ​​için bu kadarının yeterli olduğunu düşünüyorum. Gelecekte bu listeye ekleyeceksiniz.

Yorumlar
  • Popüler
  • Yeni
  • Eskimiş
Yorum bırakmak için giriş yapmalısınız
Bu sayfada henüz yorum yok