Güvenlik açısından kritik gerçek zamanlı sistemler ile çalışıyorum ve kayıt tutma çoğu zaman sürüklenişimi yakalarsanız, dolunayda her 53. Salı günü mavi bir ayda bir kez ortaya çıkan nadir böcekleri yakalamanın tek yoludur. Bu tür bir konuda sizi saplantı haline getirir, bu yüzden ağzınıza köpürmeye başlarsam şimdi özür dilerim. Aşağıdaki yerel kod hata ayıklama günlükleri için yazılmış, ancak çoğu da yönetilen dünya için geçerlidir ...
Metin günlüğü dosyalarını kullanın. Açık görünüyor, ancak bazı insanlar ikili günlük dosyaları oluşturmaya çalışıyorlar: bu çok aptalca çünkü dışarıdayken bir okuyucu aracı aramam gerekmiyor. Ayrıca, eğer metinse ve hata ayıklama ayrıntılıysa, saha mühendisinin dosyayı okuyabilmesi ve problemi bana geri dönmeden teşhis edebilmesi için iyi bir şans var. Herkes kazanır.
Hemen hemen her şeyi kaydedebilecek sistemler tasarlarım, ancak varsayılan olarak her şeyi açmam. Hata ayıklama bilgisi, zaman damgasını taşıyan ve bir liste kutusuna çıkaran gizli bir hata ayıklama iletişim kutusuna gönderilir (silinmeden önce yaklaşık 500 satırla sınırlıdır) ve iletişim kutusu onu durdurmamı, otomatik olarak bir günlük dosyasına kaydetmemi veya yönlendirmemi sağlar ekli bir hata ayıklayıcı. Bu sapma, bazen hayat kurtarıcı olabilen, tamamen seri hale getirilmiş birden fazla uygulamadaki hata ayıklama çıktısını görmeme izin veriyor. Ben kullanılan sayısal günlük düzeylerini (ne kadar yüksek düzeyini ayarlamak, daha yakalamak) kullanmak için:
off
errors only
basic
detailed
everything
ancak bu çok esnek değildir - bir hataya doğru yolunuz üzerinde çalışırken, tonlarca döküntü beklemeden tam olarak neye ihtiyaç duyduğunuza odaklanmanız çok daha etkilidir ve belirli bir işlem veya işlem olabilir. Bu hataya neden olur. Bu her şeyi açmanı gerektiriyorsa, sadece kendi işini zorlaştırıyorsun. Daha ince taneli bir şeye ihtiyacın var.
Şimdi bir bayrak sistemine dayalı olarak günlüğe kaydetmeye geçme sürecindeyim. Kaydedilen her şeyin nasıl bir işlem olduğunu gösteren bir bayrağı vardır ve ne kaydedileceğini tanımlamama izin veren bir dizi onay kutusu vardır. Genellikle bu liste şöyle görünür:
#define DEBUG_ERROR 1
#define DEBUG_BASIC 2
#define DEBUG_DETAIL 4
#define DEBUG_MSG_BASIC 8
#define DEBUG_MSG_POLL 16
#define DEBUG_MSG_STATUS 32
#define DEBUG_METRICS 64
#define DEBUG_EXCEPTION 128
#define DEBUG_STATE_CHANGE 256
#define DEBUG_DB_READ 512
#define DEBUG_DB_WRITE 1024
#define DEBUG_SQL_TEXT 2048
#define DEBUG_MSG_CONTENTS 4096
Bu günlüğe kaydetme sistemi, sürüm oluşturma, açık ve varsayılan olarak dosyaya kaydetme ile birlikte gelir. Hata meydana geldikten SONRA günlüğe kaydetmeniz gerektiğini öğrenmeniz için çok geç, eğer bu hata ortalama olarak her altı ayda bir kez meydana gelirse ve bunu yeniden üretme yönteminiz yoksa. Yalnızca hata ayıklama yapılarıyla çalışan günlükler adildir. sade. aptal.
Yazılım genellikle ERROR, BASIC, STATE_CHANGE ve EXCEPTION açık olarak gelir, ancak bu hata ayıklama iletişim kutusu (veya bunların kaydedildiği yerdeki bir kayıt defteri / ini / cfg ayarı) aracılığıyla alanda değiştirilebilir.
Oh ve bir şey - hata ayıklama sistemim günde bir dosya üretir. Gereksinimleriniz farklı olabilir. Ancak, hata ayıklama kodunuzun her dosyayı çalıştırdığınız kodun tarihi, sürümü ve mümkünse müşteri kimliği, sistemin konumu veya ne olursa olsun ile başlattığından emin olun . Alandan gelen günlük kayıtların bir karışımını elde edebilirsiniz ve sistemin gerçekte nerelerde ve hangi sürümde çalıştıklarını kaydeden kayıtlara ihtiyacınız var ve müşteriye güvenemezsiniz. / field engineer size hangi sürüme sahip olduklarını söylemesi için - sadece hangi sürüme sahip olduklarını söyleyebilirler. Daha kötüsü, diskteki exe sürümünü bildirebilirler, ancak eski sürüm hala çalışıyor çünkü değiştirdikten sonra yeniden başlatmayı unuttular. Kodun sana söylesin.
Son olarak, kodunuzun kendi sorunlarını oluşturmasını istemezsiniz, bu nedenle günlük dosyalarını bu kadar çok gün veya haftadan sonra temizlemek için bir zamanlayıcı işlevi koyun (yalnızca şimdiki zamanla dosya oluşturma zamanı arasındaki farkı kontrol edin). Bu, her zaman çalışan bir sunucu uygulaması için Tamam, başlattığınızda herhangi bir eski veriyi temizleyerek elde edebileceğiniz bir istemci tarafı uygulamasında. Genellikle 30 gün sonra temizleniriz, sık sık mühendis ziyareti olmayan bir sistemde daha uzun süre bırakmak isteyebilirsiniz. Açıkçası bu, günlük dosyalarınızın boyutuna da bağlıdır.