W3C Günlüğü
W3C genişletilmiş günlüğü, sunucu oturumunda veya URL grubunda etkinleştirilebilen sunucu tarafı günlüğü türüdür. W3C günlüğü bir URL grubunda etkinleştirildiğinde, günlük yalnızca URL Grubuna yönlendirilen isteklerde gerçekleştirilir. W3C günlüğünü etkinleştirmek üzere yapılandırılmış her URL grubu için ayrı bir günlük dosyası oluşturulur.
Sunucu oturumunda W3C günlüğü etkinleştirildiğinde, sunucu oturumu altındaki tüm URL grupları için merkezi bir günlük kaydı biçimi olarak çalışır. Sunucu oturumundaki tüm URL grupları için tek bir günlük dosyası tutulur.
Aşağıdaki tabloda, HTTP Server API'sinin günlüğe kaydedebileceği alanlar listelenmiştir. Tablo, HTTP_LOG_FIELD sabitlerinin bir alt kümesini içerir. Aşağıda listelenen alanlardan bazıları HTTP Server API'sinde dahili olarak otomatik olarak oluşturulur ve bu nedenle HTTP_LOG_FIELDS_DATA yapısında yer almaz. "Farklı Görünür" sütunu, günlük dosyasında görünen metni içerir. Tablodaki veriler günlük dosyası kaydındaki oluşum sırasına göredir.
"HTTP Sunucu API'si oluşturuldu" olarak işaretlenmemiş alanların uygulamaya göre HTTP_LOG_FIELDS_DATA yapıya geçirilmesi gerekir. Uygulama, geçirilen HTTP_REQUEST yapısından bu alanları oluşturabilir.
Alan | Farklı Görünür | Açıklama | HTTP_LOG_FIELDS_DATA Üyesi | sabitleri HTTP_LOG_FIELDS |
---|---|---|---|---|
Tarih | tarih | Etkinliğin gerçekleştiği tarih. | HTTP Sunucusu API'si oluşturuldu. | HTTP_LOG_FIELD_DATE |
Saat | Saat | Etkinliğin gerçekleştiği eşgüdümlü evrensel saat (UTC) saati. | HTTP Sunucusu API'si oluşturuldu. | HTTP_LOG_FIELD_TIME |
Hizmet Adı ve Örnek Numarası | s-sitename | İstemcide çalışan İnternet hizmeti adı ve örnek numarası. | ServiceName | HTTP_LOG_FIELD_SITE_NAME |
Sunucu Adı | s-computername | Günlük dosyası girişinin oluşturulduğu sunucunun adı. | SunucuAdı | HTTP_LOG_FIELD_COMPUTER_NAME |
Sunucu IP Adresi | s-ip | Günlük dosyası girişinin oluşturulduğu sunucunun IP adresi. | ServerIp | HTTP_LOG_FIELD_SERVER_IP |
Yöntem | cs-metodu | İstenen fiil, örneğin bir GET yöntemi. | Yöntem | HTTP_LOG_FIELD_METHOD |
URI Kökü | cs-uri-stem | Fiilin hedefi, örneğin, Default.htm. | Uristem | HTTP_LOG_FIELD_URI_STEM |
URI Sorgusu | cs-uri-query | Varsa, istemcinin gerçekleştirmeye çalıştığı sorgu. Evrensel Kaynak Tanımlayıcısı (URI) sorgusu yalnızca dinamik sayfalar için gereklidir. | UriQuery | HTTP_LOG_FIELD_URI_QUERY |
Sunucu Bağlantı Noktası | s-port | Hizmet için yapılandırılan sunucu bağlantı noktası numarası. | ServerPort | HTTP_LOG_FIELD_SERVER_PORT |
Kullanıcı Adı | cs-username | Sunucuya erişen kimliği doğrulanmış kullanıcının adı. Anonim kullanıcılar kısa çizgiyle gösterilir. | Kullanıcı adı | HTTP_LOG_FIELD_USER_NAME |
İstemci IP Adresi | c-ip | İsteği yapan istemcinin IP adresi. | ClientIp | HTTP_LOG_FIELD_CLIENT_IP |
Protokol Sürümü | cs-version | İstemcinin kullandığı HTTP protokolü sürümü. | HTTP Sunucusu API'si oluşturuldu. | HTTP_LOG_FIELD_VERSION |
Kullanıcı Aracısı | cs(User-Agent) | İstemcinin kullandığı tarayıcı türü. | UserAgent | HTTP_LOG_FIELD_USER_AGENT |
Çerez | cs(Tanımlama Bilgisi) | Varsa gönderilen veya alınan tanımlama bilgisinin içeriği. | Çerez | HTTP_LOG_FIELD_COOKIE |
Referrer | cs(Başvuran) | Kullanıcının son ziyaret yaptığı site. Bu site geçerli siteye bir bağlantı sağladı. | Referrer | HTTP_LOG_FIELD_REFERRER |
Ev sahibi | cs-host | Varsa, ana bilgisayar üst bilgi adı. | Ev sahibi | HTTP_LOG_FIELD_HOST |
HTTP Durumu | sc-status | HTTP durum kodu. | ProtocolStatus | HTTP_LOG_FIELD_STATUS |
Protokol Alt Durumu | sc-substatus | Alt durum hata kodu. | SubStatus | HTTP_LOG_FIELD_SUB_STATUS |
Win32 Durumu | sc-win32-status | Windows durum kodu. | Win32Status | HTTP_LOG_FIELD_WIN32_STATUS |
Gönderilen Bayt Sayısı | sc-bytes | Sunucu tarafından gönderilen bayt sayısı. | HTTP Sunucusu API'si oluşturuldu. | HTTP_LOG_FIELD_BYTES_SENT |
Alınan Bayt Sayısı | cs-bytes | Sunucu tarafından alınan ve işlenen bayt sayısı. | HTTP Sunucusu API'si oluşturuldu. | HTTP_LOG_FIELD_BYTES_RECV |
Geçen Süre | zaman aldı | Eylemin gerçekleştirilen süre (milisaniye cinsinden). | HTTP Sunucusu API'si oluşturuldu. | HTTP_LOG_FIELD_TIME_TAKEN |
Akış Kimliği | streamid | Akış Kimliği. | HTTP Sunucusu API'si oluşturuldu. | HTTP_LOG_FIELD_STREAM_ID |
Günlük dosyası, özelleştirilebilir bir ASCII metin tabanlı biçimdir. Dosyadaki alan ön ekleri aşağıdaki gibi tanımlanır:
Önek | Açıklama |
---|---|
s | Sunucu eylemleri. |
c | İstemci eylemleri. |
Sc | Sunucudan İstemciye eylemler. |
bilgisayar bilimi | İstemciden Sunucuya eylemler. |
Uygulama, W3C Genişletilmiş günlük dosyası alanlarından birini veya daha fazlasını seçebilir, ancak tüm alanlar bilgi içermez. Seçili olan ancak bilgi bulunmayan alanlar için yer tutucu olarak kısa çizgi (-) görüntülenir. Bir alan yazdırılamayan bir karakter içeriyorsa, HTTP Sunucusu API'si günlük dosyası biçimini korumak için alanı artı işareti (+) ile değiştirir. Bu durum genellikle virüs saldırılarıyla oluşur. Örneğin, kötü niyetli bir kullanıcı satır başı gönderdiğinde ve satır beslemelerinde artı işareti (+) ile değiştirilmezse günlük dosyası biçimini bozar. Alanlar boşluklarla ayrılır.
Bir alan URL grubu veya sunucu oturumu tarafından etkinleştirildiyse ancak istek için seçili değilse, günlük dosyasında yer tutucu olarak kısa çizgi (-) ile görüntülenir.
Günlük dosyaları, ilk istek URL Grubu veya sunucu oturumuna ulaştığında oluşturulur, günlük yapılandırıldığında oluşturulmaz. Aşağıdaki örnekte İstemci IP'si, Kullanıcı Adı, Sunucu IP'si, Sunucu Bağlantı Noktası, Yöntem, URI Kökü, URI Sorgusu, Durum ve Kullanıcı Aracısı alanlarının etkin olduğu bir W3C günlük dosyası için ilk günlük dosyası girişi gösterilmektedir:
#Software: Microsoft HTTP Server API 2.0
#Version: 1.0 // the log file version as it's described by "https://www.w3.org/TR/WD-logfile".
#Date: 2002-05-02 17:42:15 // when the first log file entry was recorded, which is when the entire log file was created.
#Fields: date time c-ip cs-username s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status cs(User-Agent)
2002-05-02 17:42:15 172.22.255.255 - 172.30.255.255 80 GET /images/picture.jpg - 200 Mozilla/4.0+(compatible;MSIE+5.5;+Windows+2000+Server)
İstek ayrıştırmadan önce HTTP Sunucusu API'sinin ilk baytını alması halinde zaman alan alan başlatılır. Zaman alan zaman damgası, son gönderme tamamlanma işlemi gerçekleştiğinde durdurulur. Geçen süre, ağ genelindeki zamanı yansıtmaz. HTTP Server API'sinin ilk istekle birlikte günlük dosyasını açması nedeniyle siteye yapılan ilk istek diğer benzer isteklerden biraz daha uzun bir süre gösterir.