Kayıt Yönergeleri
Olay günlükleri, sistem ve sistemde çalışan uygulamalar adına önemli olayların kayıtlarını depolar. Günlük işlevleri genel amaçlı olduğundan, hangi bilgilerin günlüğe kaydedileceğine karar vermeniz gerekir. Genel olarak, yalnızca bir donanım veya yazılım sorununu tanılamada yararlı olabilecek bilgileri günlüğe kaydetmeniz gerekir. Olay günlüğü, izleme aracı olarak kullanılmak üzere tasarlanmamıştır.
Günlüğe Kaydedilecek Olayları Seçme
Olay günlüğünün yararlı olabileceği durumlara örnekler aşağıda verilmiştir:
- Kaynak sorunları. Bellek ayırma başarısız olduğunda bir Uyarı olayını günlüğe kaydetmek, yetersiz bellek durumunun nedeninin gösterilmesine yardımcı olabilir.
- Donanım sorunları. Bir cihaz sürücüsü disk denetleyicisi zaman aşımı, paralel bağlantı noktasında güç kesintisi veya ağ veya seri karttan veri hatasıyla karşılaşırsa, cihaz sürücüsü sistem yöneticisinin donanım sorunlarını tanılamasına yardımcı olmak için bu olaylar hakkındaki bilgileri günlüğe kaydedebilir.
- Bozuk sektörler. Disk sürücüsü bozuk bir kesimle karşılaşırsa, işlemi yeniden denedikten sonra kesimden okuma veya kesime yazma işlemi gerçekleştirebilir, ancak kesim sonunda kötü gider. Disk sürücüsü devam edebilirse bir Uyarı olayını günlüğe kaydetmesi gerekir; aksi takdirde, bir Error olayını günlüğe kaydetmesi gerekir. Bir dosya sistemi sürücüsü çok sayıda bozuk kesim bulur ve bunları düzeltirse, Uyarı olaylarının günlüğe kaydedilmesi bir yöneticinin diskin başarısız olmak üzere olduğunu belirlemesine yardımcı olabilir.
- Bilgilendirme etkinlikleri. Bir sunucu uygulaması (veritabanı sunucusu gibi), bir kullanıcının oturum açması, veritabanını açması veya dosya aktarımı başlatması gibi kayıtları kaydeder. Sunucu ayrıca hatalar (dosyaya erişilemiyor, konak işleminin bağlantısı kesiliyor vb.), veritabanı bozulması veya dosya aktarımının başarılı olup olmadığı gibi diğer olayları da günlüğe kaydedebilir.
Mesaj Yazma
İletiler, bir sorunu gidermeye çalışan yöneticiler ve kullanıcılar için anlamlı olmalıdır. İleti, soruna neyin neden olduğunu ve sorunun nasıl düzeltilmesi gerektiğini anlamak için gereken tüm bilgileri içermelidir.
Gizemli bir mesaj yazmaktan kaçının, örneğin "G/Ç alt sisteminden alınan sürücü paketi geçersizdi." Veri pakettir." Daha iyi bir mesaj, söz konusu sürücünün düzgün çalıştığını ancak yanlış biçimlendirilmiş paketleri kaydettiğini gösterir. Sorunu düzeltmek için sürücünün Unicode sürümünün gerekli olduğu söylenebilir. İyi hata iletileri yazma hakkında daha fazla bilgi için bkz. Hata İletisi Yönergeleri.
Olay günlükleri virgül veya sekmeyle ayrılmış metin dosyaları olarak kaydedilebildiğinden, ileti metninde sekme veya virgül kullanmayın. Birçok kuruluş bu dosyaları veritabanlarına aktarır ve ek biçimlendirme karakterleri el ile işleme gerektirir.
UNC adlarını veya boşluk içeren diğer bağlantıları kullanırken, adı köşeli ayraç içine alın. Örneğin, <\\paylaşım adı\sunucu adı>. İletinin sonuna kullanıcıyı ilgili yardım malzemelerini işaret eden bir URL yazabilirsiniz. URL tam nitelikli bir DNS ana bilgisayar adı olmalıdır. Örneğin, iletilerinize şu metni ekleyebilirsiniz: "Bu ileti hakkında ek bilgi için lütfen https://www.microsoft.com/Support/ProdRedirect/ContentSearch.asp
'deki destek sitemizi ziyaret edin." Bağlantı, kullanıcıyı hata iletisiyle ilgili içeriğe yönlendiren bir ASP sayfasına yol açabilir. Kullanıcının nereye yönlendirileceğini belirlemek için ek parametreleri ayrıştıracak (URL'ye tıklandığında geçirilir).
ReportEvent işlevine geçirilen bağımsız değişkenler URL'ye aşağıdaki gibi eklenir:
strHTTPQuery += L"?EvtSrc=" + _strEscapedSource;
strHTTPQuery += L"&EvtCat=" + _strEscapedCategory;
strHTTPQuery += L"&EvtID=" + _strEscapedEventID;
strHTTPQuery += L"&EvtCatID=" + _strEscapedCategoryID;
strHTTPQuery += L"&EvtType=" + _strEscapedType;
strHTTPQuery += L"&EvtTypeID=" + _strEscapedTypeID;
strHTTPQuery += L"&EvtRptTime=" + _strEscapedDateAndTime;
strHTTPQuery += L"&EvtTZBias=" + _strEscapedTimeZoneBias;
Olay kaynağının ileti DLL üst bilgisindeki şirket adı, ürün adı, ürün sürümü, dosya adı ve dosya sürümü geçerliyse, URL'ye de eklenir:
ADD_VER_STR(L"CoName", _strEscapedCompanyName);
ADD_VER_STR(L"ProdName", _strEscapedProductName);
ADD_VER_STR(L"ProdVer", _strEscapedProductVersion);
ADD_VER_STR(L"FileName", _strEscapedFileName);
ADD_VER_STR(L"FileVer", _strEscapedFileVersion);
Ek Yükü Azaltma
Olay günlüğü, disk alanı ve işlemci süresi gibi kaynakları kullanır. Bir olay günlüğünün gerektirdiği disk alanı miktarı ve olayları günlüğe kaydeden bir uygulamanın ek yükü, ne kadar bilgi günlüğe kaydetmeyi seçtiğinize bağlıdır. Bu nedenle yalnızca temel bilgileri günlüğe kaydetmek önemlidir. Ayrıca, olay günlüğü çağrılarını kodun ana yolu yerine hata yoluna yerleştirmenin performansı düşürmeme açısından iyi olacağı da belirtilmelidir.
Her olay günlüğü kaydı için gereken disk alanı miktarı, EVENTLOGRECORD yapısının üyelerini içerir. Bu değişken uzunlukta bir yapıdır; dizeleri ve ikili veriler, yapıya göre depolanır.