Apache HTTP Sunucusu Sürüm 2.2
Apache Modülü mod_log_config
Açıklama: | Sunucuya yapılan isteklerin günlük kayıtlarının tutulması |
---|---|
Durum: | Temel |
Modül Betimleyici: | log_config_module |
Kaynak Dosyası: | mod_log_config.c |
Özet
Bu modül istemci isteklerinin esnek şekilde günlüklenmesi ile ilgilidir. Günlükler kişiselleştirilebilir biçemdedir ve doğrudan bir dosyaya yazılabileceği gibi boru üzerinden harici bir sürece de yazılabilir. İsteğin özelliklerine bağlı olarak bazı isteklerin günlüklere kaydedilmesi veya kaydedilmemesi mümkün kılınmıştır.
Bu modül üç yönerge içermektedir: Bir günlük dosyası oluşturmak için
TransferLog
, günlük
biçemini kişiselleştirmek için LogFormat
ve tek başına bir günlük
dosyasını hem tanımlayıp hem de biçemleyen CustomLog
yönergesi. Her isteğin
çok sayıda dosyaya günlüklenmesini sağlamak için yapılandırma dosyasında
her sunucu için birden fazla TransferLog
ve
CustomLog
yönergesi belirtilebilir.
Ayrıca bakınız:
Günlük Girdilerinin Kişiselleştirilmesi
LogFormat
ve CustomLog
yönergelerinin biçem
argümanı bir dizgedir. Bu dizge her isteği günlük dosyasına günlüklemek
için kullanılır. Doğrudan günlük dosyalarına kopyalanmak üzere dizgesel
sabitler içerebileceği gibi satırsonu ve sekme karakterleri olarak C
tarzı "\n" ve "\t" denetim karakterlerini de içerebilir. Dizgesel sabit
olarak kullanılan tırnak ve tersbölü imlerinin tersbölü ile öncelenmesi
gerekir.
İstek özellikleri biçem dizgesine “%
” imli belirteçler
yerleştirilerek günlüklenir. Bu belirteçler ve anlamları:
Belirteç | Açıklama | ||||||
---|---|---|---|---|---|---|---|
%% |
Yüzde imi | ||||||
%a |
Uzak IP adresi | ||||||
%A |
Yerel IP adresi | ||||||
%B |
HTTP başlıkları hariç, yanıtın bayt cinsinden uzunluğu. | ||||||
%b |
HTTP başlıkları hariç, yanıtın bayt cinsinden uzunluğu. OGB
biçeminde hiç bayt gönderilmemişse günlüğe '- ' yerine
'0 ' çıktılanır. | ||||||
%{Fesmekan}C |
İstek içinde sunucuya gönderilen Fesmekan çerezinin içeriği. Sadece 0. sürüm çerezler tam olarak desteklenir. | ||||||
%D |
Mikrosaniye cinsinden isteği sunmak için harcanan zaman. | ||||||
%{FALANCA}e |
FALANCA ortam değişkeninin içeriği. | ||||||
%f |
Dosya ismi | ||||||
%h |
Uzak konak | ||||||
%H |
İstek Protokolü | ||||||
%{Filanca}i |
İstekle birlikte sunucuya gönderilen
Filanca: başlık satır(lar)ının
içeriği. Diğer modüllerde (örn. mod_headers )
yapılan değişikliklerden etkilenir. Çok sayıda modülün istek
başlığını değişikliğe uğrattığı durumda istek başlığında başta
neyin geldiği ile ilgileniyorsanız, başlığı
mod_setenvif ile bir ortam değişkenine kopyalayıp
yukarıda açıklandığı gibi %{FALANCA}e ile bu
değeri günlükte kullanabilirsiniz.
| ||||||
%k |
Bu bağlantıda işlenen isteklerin sayısı; yani örneğin,
'1' değeri bağlantı kurulduktan sonraki ilk kalıcı bağlantıyı,
'2', ikinci bağlantıyı, ..., vb. gösterir;
KeepAlive kullanılmışsa
değer anlamlıdır; aksi takdirde değer daima (ilk isteği
belirten) 0’dır. 2.2.11 sürümünden beri kullanılabilmektedir.
| ||||||
%l |
Uzak kullanıcı kimliği (sağlanmışsa, identd üzerinden).
mod_ident modülü mevcut ve IdentityCheck yönergesine değer
olarak On atanmış olmadıkça bu belirteç için günlüğe
tire imi yazılır. | ||||||
%m |
İstek yöntemi | ||||||
%{Filanca}n |
Diğer modüldeki Filanca bilgisinin içeriği. | ||||||
%{Filanca}o |
Yanıttaki Filanca: başlık satır(lar)ının
içeriği. | ||||||
%p |
Sunucunun isteği sunduğu meşru port | ||||||
%{biçem}p |
Sunucunun veya istemcinin gerçek portu veya sunucunun isteği
sunduğu meşru port. Geçerli biçemler: canonical ,
local ve remote (anlamları sırasıyla:
meşru, yerel ve uzak). | ||||||
%P |
İsteği sunan çocuk sürecin süreç kimliği. | ||||||
%{biçem}P |
İsteği sunan çocuk sürecin süreç kimliği (pid ) veya
evre kimliği (tid ). Geçerli biçemler: pid ,
tid , hextid . hextid için APR
1.2.0 veya üstü gerekir. | ||||||
%q |
Sorgu dizgesi (bir sorgu dizgesi mevcutsa önüne bir ?
eklenir yoksa hiçbir şey eklenmez). | ||||||
%r |
İsteğin ilk satırı. | ||||||
%R |
Yanıt varsa yanıtı üreten eylemci. | ||||||
%s |
Durum. Dahili olarak yönlendirilen istekler için isteğin *özgün*
durumudur --- isteğin son durumu için %>s
kullanınız. | ||||||
%t |
İsteğin alındığı tarih ve saat (standart ingiliz biçemi). | ||||||
%{biçem}t |
İsteğin alındığı tarih ve saat; biçem
strftime(3) biçeminde belirtilmelidir (genelde
yerelleştirme amaçlı). | ||||||
%T |
Saniye cinsinden, isteği sunmak için harcanan zaman. | ||||||
%u |
Uzak kullanıcı (kimlik doğrulaması istenmişse vardır; durum kodu
(%s ) 401 ise yanlış olabilir). | ||||||
%U |
Herhangi bir sorgu dizgesi içermeksizin istenen URL yolu. | ||||||
%v |
İsteği sunan sunucunun meşru sunucu ismi (ServerName ). | ||||||
%V |
UseCanonicalName ayarı ile
ilgili sunucu ismi. | ||||||
%X |
Yanıt tamamlandığında bağlantı durumu:
(Apache 1.3’ün son sürümlerinde bu belirteç | ||||||
%I |
İstek ve başlıklar dahil alınan bayt sayısı; sıfır olamaz. Bunu
kullanmak için mod_logio etkin olmalıdır. | ||||||
%O |
Başlıklar dahil gönderilen bayt sayısı; sıfır olamaz.Bunu
kullanmak için mod_logio etkin olmalıdır. | ||||||
%{ALANADI}^ti |
Sunucuya gönderilen istekteki ALANADI:
Trailer satır(lar)ının içeriği. | ||||||
%{VARNAME}^to |
Sunucudan gönderilen yanıttaki ALANADI:
Trailer satır(lar)ının içeriği. |
Değiştiriciler
Belli öğelerin sadece belli durum kodlarıyla ilgili yanıtlarla
basılabilmesi için bu durum kodları % iminden hemen sonra virgüllerle
ayrılmış olarak yazılabilir. Örneğin,
"%400,501{User-agent}i"
belirteci,
User-agent
başlığını sadece 400 ve 501 hatalarında
günlüğe kaydeder. Diğer durum kodları için günlüğe "-"
yazılır. Durum kodlarını olumsuzlamak için başa bir "!
"
konabilir. Örneğin, "%!200,304,302{Referer}i"
belirteci,
200,304,302 durum kodlarından biriyle dönmeyen tüm istekler için
Referer
başlığını durum koduyla birlikte günlüğe
kaydedecektir.
İsteğin dahili olarak yönlendirilmesinde özgün durumunun mu yoksa son
durumunun mu hesaba katılacağı "<" ve ">" değiştiricileri ile
belirtilebilir. Öntanımlı olarak %s, %U, %T, %D,
ve
%r
belirteçleri isteğin özgün durumuna bakarken diğerleri
son durumuna bakarlar. Bu bakımdan örneğin, %>s
belirteci, özgün istekteki kimliği doğrulanmış kullanıcının, dahili
olarak kimlik doğrulaması gerekmeyen bir özkaynağa yönlendirilmesi
halinde isteğin son durumunu kaydetmekte kullanılabilir.
Bazı Bilgiler
Güvenlik nedeniyle, 2.0.46 sürümünden itibaren %r
,
%i
ve %o
belirteçlerinde basılamayan
karakterler ve diğer özel karakterler \xhh
dizilimleri biçeminde öncelenmektedir. Burada hh yerine
karakter numarasının onaltılık gösterimi yazılır. Bir tersbölü ile
öncelenmesi gereken "
ve \
ile
\n
, \t
gibi C tarzı gösterimler bu kuralın
dışındadır. 2.0.46 sürümünün öncesinde bu dizgeler öncelenmezdi ve ham
günlük dosyalarıyla çalışırken dikkatli olmak gerekirdi.
2.0 sürümünde 1.3 sürümünün aksine %b
ve
%B
biçem belirteçleri, istemciye gönderilen bayt sayısını
değil, HTTP yanıtının bayt sayısını ifade ederdi (bu yanıt, örneğin,
SSL kullanıldığında veya bağlantı koptuğunda farklı uzunlukta olur).
Artık, ağa gönderilen gerçek bayt sayısını günlüğe kaydetmek için
mod_logio
modülü tarafından sağlanan %O
biçem belirteci kullanılmaktadır.
Dikkat: mod_cache
standart bir eylemci olarak değil
hızlandırılmış bir eylemci olarak gerçeklenmştir. Bu bakımdan
%R
biçem dizgesi içerik önbelleklemesi ile ilgili
herhangi bir eylemci bilgisi döndürmeyecektir.
Örnekler
Genelde herkesçe kullanılan günlük kaydı biçemleme dizgelerinden bazıları:
- Ortak Günlük Biçemi (OGB)
"%h %l %u %t \"%r\" %>s %b"
- Sanal Konaklı Ortak Günlük Biçemi
"%v %h %l %u %t \"%r\" %>s %b"
- NCSA uzun/birleşik günlük biçemi
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
- Referer başlığını içeren günlük biçemi
"%{Referer}i -> %U"
- User-agent başlığını içeren günlük biçemi
"%{User-agent}i"
Güvenlik Kaygıları
Günlük dosyarının kaydedildiği dizine sunucuyu başlatan kullanıcı dışında diğer kullanıcılar tarafından yazılabiliyor olması halinde güvenliğinizden nasıl feragat etmiş olacağınız güvenlik ipuçları belgesinde açıklanmıştır.
BufferedLogs Yönergesi
Açıklama: | Günlük girdilerini diske yazmadan önce bellekte tamponlar |
---|---|
Sözdizimi: | BufferedLogs On|Off |
Öntanımlı: | BufferedLogs Off |
Bağlam: | sunucu geneli |
Durum: | Temel |
Modül: | mod_log_config |
Uyumluluk: | 2.0.41 ve sonrasında mevcuttur. |
BufferedLogs
yönergesi,
mod_log_config
modülünün çeşitli günlük girdilerini her
isteğin hemen ardından tek tek değil, bir bütün halinde diske yazılmak
üzere bellekte saklanmasını sağlar. Bu, bazı sistemlerde daha verimli
disk erişimi, dolayısıyla daha yüksek başarım sağlayabilir. Sadece
sunucu geneli için belirtilebilir, sanal konaklar için ayrı ayrı
yapılandırılamaz.
CookieLog Yönergesi
Açıklama: | Çerezleri günlüğe kaydetmek için dosya ismi belirtmekte kullanılır. |
---|---|
Sözdizimi: | CookieLog dosya-adı |
Bağlam: | sunucu geneli, sanal konak |
Durum: | Temel |
Modül: | mod_log_config |
Uyumluluk: | Bu yönergenin kullanımı önerilmemektedir. |
CookieLog
yönergesi çerezleri günlüğe kaydetmek
için dosya ismi belirtir. Dosya isminin ServerRoot
değerine göre belirtildiği
varsayılır. Yönerge mod_cookies
ile uyumluluk için vardır
ve kullanımı önerilmemektedir.
CustomLog Yönergesi
Açıklama: | Günlük dosyasın ismini ve girdi biçemini belirler. |
---|---|
Sözdizimi: | CustomLog dosya|borulu-süreç
biçem|takma-ad
[env=[!]ortam-değişkeni] |
Bağlam: | sunucu geneli, sanal konak |
Durum: | Temel |
Modül: | mod_log_config |
CustomLog
yönergesi istekleri günlüğe kaydetmek
için kullanılır. Yönerge ile bir günlük biçemi belirtilebilir ve günlük
kaydı isteğin özelliklerine bağlı olarak ortam değişkenleri vasıtasıyla
şarta bağlı kılınabilir.
İlk argümanda günlüğün yazılacağı yer belirtilir. İki tür yer belirtilebilir:
- dosya
ServerRoot
yönergesinin değerine göreli bir dosya ismi.- borulu-süreç
- "
|
" boru karakteri ile öncelenmiş olarak günlük bilgisini standart girdisinden kabul edecek sürecin ismi (veya komut satırı) Daha fazla bilgi için borulu günlükler ile ilgili ek bilgilere bakın.Güvenlik:
Bir borulu süreç kullanılmışsa, süreç
httpd
’yi başlatan kullanıcı tarafından başlatılacaktır. Sunucu root tarafından başlatılıyorsa bu root olacaktır; bu bakımdan günlük kaydını alacak programın güvenilir olması önemlidir.Bilginize
Dosya yolunu belirtirken tersbölü çizgisi kullanılan Unix dışı platformlarda bile yapılandırma dosyasında bu amaçla normal bölü çizgilerini kullanmaya özen gösterilmelidir.
İkinci argümanda günlüğe ne yazılacağı belirtilir. Ya evvelce
LogFormat
yönergesi ile
tanımlanmış bir takma-ad ya da içeriği Günlük Girdilerinin Kişiselleştirilmesi bölümünde
açıklanmış bir biçem dizgesi olabilir.
Örneğin, aşağıdaki iki yönerge kümesi aynı etkiye sahiptir:
# Biçem dizgesi yerine takma ad içeren CustomLog
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
# Biçem dizgesinin kendisini içeren CustomLog
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"
Üçüncü argüman isteğe bağlı olup, sunucu ortamında belli bir değişkenin
varlığına bağlı olarak belli bir isteğin günlüğe kaydedilip
kaydedilmeyeceğini belirler. Eğer istek için belirtilen ortam değişkeni mevcutsa (veya
'env=!değişken
' durumunda mevcut değilse) istek
günlüğe kaydedilir.
Ortam değişkenleri mod_setenvif
ve/veya mod_rewrite
modülleri kullanılarak her istek
için ayrı ayrı atanabilir. Örneğin, GIF biçemli resimler için yapılan
istekleri ana günlük dosyasına değil de başka bir dosyaya kaydetmek
isterseniz:
SetEnvIf Request_URI \.gif$ gif-image
CustomLog gif-requests.log common env=gif-image
CustomLog nongif-requests.log common env=!gif-image
Veya eski RefererIgnore
yönergesinin davranışını taklit
etmek isterseniz:
SetEnvIf Referer example\.com yerel-atif
CustomLog referer.log referer env=!yerel-atif
LogFormat Yönergesi
Açıklama: | Bir günlük dosyasında kullanılmak üzere girdi biçemi tanımlar. |
---|---|
Sözdizimi: | LogFormat biçem|takma-ad
[takma-ad] |
Öntanımlı: | LogFormat "%h %l %u %t \"%r\" %>s %b" |
Bağlam: | sunucu geneli, sanal konak |
Durum: | Temel |
Modül: | mod_log_config |
Bu yönerge erişim günlüğü dosyasının girdi biçemini belirler.
LogFormat
yönergesi iki şekilde kullanılabilir.
Tek argüman belirtilebilen ilkinde daha sonra
TransferLog
yönergelerinde belirtilen günlüklerde
kullanılmak üzere günlük biçemini belirler. Bu günlük biçemi yukarıda
açıklanan biçem belirteçlerinden
oluşur. Bu tek argüman yerine aşağıda açıklandığı gibi önceki bir
LogFormat
yönergesinde tanımlanmış bir günlük
biçemine atıf yapan bir takma-ad da belirtilebilir.
LogFormat
yönergesinin ikinci kullanım şeklinde
biçem bir takma-ad için tanımlanır. Bu takma ad
daha sonraki LogFormat
veya CustomLog
yönergelerinde aynı biçem
dizgesini uzun uzadıya yazmamak için takma-ad olarak
kullanılır. Bir LogFormat
yönergesi bir takma ad
tanımlamaktan başka bir şey yapmaz; yani, yaptığı iş
sadece bir takma ad tanımlamaktan ibarettir, biçemi uygulamaz veya
biçemi öntanımlı hale getirmez. Bu bakımdan sonraki TransferLog
yönergelerini de
etkilemeyecektir. Ayrıca, LogFormat
yönergesi bir
takma ada başka bir takma ad tanımlamakta da kullanılamaz. Bir takma
adın yüzde imi (%
) içeremeyeceğine de dikkat ediniz.
Örnek
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
TransferLog Yönergesi
Açıklama: | Bir günlük dosyasının yerini belirtir. |
---|---|
Sözdizimi: | TransferLog dosya|borulu-süreç
[takma-ad] |
Bağlam: | sunucu geneli, sanal konak |
Durum: | Temel |
Modül: | mod_log_config |
Bir günlük biçemi tanımlanmasını ve şarta bağlı günlük kaydını mümkün
kılmaması haricinde CustomLog
yönergesi gibidir. Günlük biçemi yerine kendinden
önce yer alan bir LogFormat
yönergesinde tanımlanan
bir takma ad kullanılır. Açıkça bir günlük biçemi takma adı
belirtilmedikçe Ortak Günlük Biçemi öntanımlıdır.
Örnek
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
\"%{User-agent}i\""
TransferLog logs/access_log