1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8 <title>Günlük Dosyaları - Apache HTTP Sunucusu</title>
9 <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="./images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
15 <p class="apache">Apache HTTP Sunucusu Sürüm 2.3</p>
16 <img alt="" src="./images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
19 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Sunucusu</a> > <a href="http://httpd.apache.org/docs/">Belgeleme</a> > <a href="./">Sürüm 2.3</a></div><div id="page-content"><div id="preamble"><h1>Günlük Dosyaları</h1>
21 <p><span>Mevcut Diller: </span><a href="./en/logs.html" hreflang="en" rel="alternate" title="English"> en </a> |
22 <a href="./fr/logs.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
23 <a href="./ja/logs.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
24 <a href="./ko/logs.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
25 <a href="./tr/logs.html" title="Türkçe"> tr </a></p>
28 <p>Bir HTTP sunucusunu verimli şekilde yönetebilmek için oluşabilecek
29 sorunlardan başka sunucunun başarımı ve etkinliği hakkında da bazı geri
30 bildirimler almak gerekir. Apache HTTP Sunucusu çok kapsamlı ve esnek
31 bir günlükleme yeteneğine sahiptir. Bu belgede sunucunun günlükleme
32 yeteneğini nasıl yapılandıracağınızdan ve günlük kayıtlarını nasıl
33 yorumlayacağınızdan bahsedilecektir.</p>
35 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#security">Güvenlik Uyarısı</a></li>
36 <li><img alt="" src="./images/down.gif" /> <a href="#errorlog">Hata Günlüğü</a></li>
37 <li><img alt="" src="./images/down.gif" /> <a href="#accesslog">Erişim Günlüğü</a></li>
38 <li><img alt="" src="./images/down.gif" /> <a href="#rotation">Günlük Çevrimi</a></li>
39 <li><img alt="" src="./images/down.gif" /> <a href="#piped">Borulu Günlükler</a></li>
40 <li><img alt="" src="./images/down.gif" /> <a href="#virtualhost">Sanal Konaklar</a></li>
41 <li><img alt="" src="./images/down.gif" /> <a href="#other">Diğer Günlük Dosyaları</a></li>
43 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
45 <h2><a name="security" id="security">Güvenlik Uyarısı</a></h2>
48 <p>Apache’nin günlük dosyalarını yazdığı dizine yazabilen birinin sunucuyu
49 başlatan kullanıcı kimliğine (bu genellikle root olur) erişim
50 kazanabileceğine hemen hemen kesin gözüyle bakılabilir. Sonuçlarının
51 neler olacağını kestiremiyorsanız günlüklerin yazıldığı dizinde <em>hiç
52 kimseye</em> yazma erişimi vermeyin; ayrıntılı bilgi için <a href="misc/security_tips.html">güvenlik ipuçları</a> belgesine
55 <p>Buna ilaveten, günlük dosyaları istemci tarafından sağlanmış bilgiler
56 de içerebilir. Bu nedenle, kötü niyetli istemcilerin günlük dosyalarına
57 denetim karakterleri girmeleri olasılığına karşı ham günlükler ele
58 alınırken dikkatli olunmalıdır.</p>
59 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
61 <h2><a name="errorlog" id="errorlog">Hata Günlüğü</a></h2>
63 <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td /><td><ul><li><code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code></li><li><code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code></li></ul></td></tr></table>
65 <p>İsmi ve yeri <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> yönergesi
66 ile belirtilen sunucu hata günlüğü, en önemli günlük dosyasıdır. Apache
67 httpd tarafından istekler işlenirken saptanan hatalar ve tanı bilgileri
68 bu dosyaya gönderilir. Sunucuyu başlatırken veya sunucu çalışırken bir
69 sorunla karşılaşıldığında, neyin yanlış gittiğini öğrenmek için
70 bakılacak ilk yer burasıdır. Günlük kaydı çoğunlukla sorunun nasıl
71 düzeltileceği ile ilgili ayrıntıları da içerir.</p>
73 <p>Hata günlüğü normal olarak bir dosyaya yazılır (genellikle, dosyanın
74 ismi Unix sistemlerinde <code>error_log</code>, Windows ve OS/2’de ise
75 <code>error.log</code>’dur). Ayrıca, Unix sistemlerinde sunucunun
76 hataları <code>syslog</code>’a veya <a href="#piped">borulamak suretiyle
77 bir programa</a> aktarması da mümkündür.</p>
79 <p>Hata günlüğünün biçemi anlaşılır olup içeriği kısmen serbestçe
80 belirlenir. Çoğu hata günlüğü girdisinde bulunan belli başlı bilgiler
81 vardır. Örnek tipik bir hata iletisi içermektedir:</p>
83 <div class="example"><p><code>
84 [Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1]
85 client denied by server configuration:
86 /export/home/live/ap/htdocs/test
89 <p>Günlük girdisinin ilk öğesi iletinin yazıldığı tarih ve saatten oluşur.
90 İkinci öğe raporlanan bilginin önem derecesini belirtir. Hata günlüğüne
91 gönderilecek hata türlerinin önem seviyesini belirlemek için <code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code> yönergesi kullanılır. Üçüncü öğe
92 hatanın üretilmesine sebep olan istemcinin IP adresini içerir. Kalanı
93 iletinin kendisidir (duruma bakılırsa sunucu istemci erişimini reddetmek
94 üzere yapılandırılmış). Sunucu istenen belgenin (belge yolunu değil)
95 dosya sistemindeki yolunu raporlamıştır.</p>
97 <p>Hata günlüğünde görünebilecek ileti çeşitliliği oldukça fazladır. Çoğu
98 yukarıdaki örneğin benzeridir. Hata günlüğü ayrıca, CGI betiklerinin
99 hata ayıklama çıktılarını da içerir. Bir CGI betiği tarafından standart
100 hataya (<code>stderr</code>) yazılan her türlü bilgi doğrudan hata
101 günlüğüne kopyalanır.</p>
103 <p>Hata günlüğünü bilgi ekleyerek veya kaldırarak kişiselleştirmek
104 mümkündür. Bununla birlikte, hata günlüğü girdilerinin ilgili olduğu
105 isteklerin <a href="#accesslog">erişim günlüğünde</a> de girdileri
106 vardır. Örneğin, yukarıdaki girdi, erişim günlüğünde 403 durum kodlu bir
107 girdiyle ilgilidir. Erişim günlüğünü de kişiselleştirmek mümkün
108 olduğundan hata durumlarında bu günlük dosyasını da kullanarak daha
109 fazla bilgi sağlayabilirsiniz.</p>
111 <p>Sunucuyu denerken olası sorunlara karşı hata günlüğünü sürekli
112 izlemelisiniz. Unix sistemlerinde bunu şöyle bir komutla
113 sağlayabilirsiniz:</p>
115 <div class="example"><p><code>
118 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
119 <div class="section">
120 <h2><a name="accesslog" id="accesslog">Erişim Günlüğü</a></h2>
123 <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code></li></ul></td></tr></table>
125 <p>Sunucu erişim günlüğü sunucu tarafından işleme alınan tüm istekleri
126 kaydeder. Erişim günlüğünün yeri ve içeriği <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi ile belirlenir.
127 <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> yönergesi ile
128 günlük içeriğini kişiselleştirmek mümkündür. Bu bölümde sunucunun
129 bilgileri erişim günlüğüne kaydetmesi için nasıl yapılandırılacağından
132 <p>Şüphesiz, bilginin erişim günlüğünde saklanması günlük yönetiminde ilk
133 adımı oluşturur. Sonraki adım yararlı istatistikleri üretmek için bu
134 bilgiyi incelemektir. Günlük incelemesi bu belgenin kapsamına dahil
135 değildir ve aslında bu işlem sunucunun yaptığı işlerden biri değildir.
136 Bu konu ve günlük incelemesi yapan uygulamalar hakkında daha ayrıntılı
137 bilgi edinmek için <a href="http://dmoz.org/Computers/Software/Internet/Site_Management/Log_analysis/">dmoz.org</a> veya <a href="http://dir.yahoo.com/Computers_and_Internet/Software/Internet/World_Wide_Web/Servers/Log_Analysis_Tools/">Yahoo</a>’ya bakınız.</p>
139 <p>Apache httpd’nin çeşitli sürümlerinde erişim günlüklerini denetlemek
140 için kullanılan diğer modüller ve yönergeler arasında mod_log_referer,
141 mod_log_agent modülleri ve <code>TransferLog</code> yönergesi
142 sayılabilir. Artık, daha eski tüm diğer yönergelerin işlevselliklerini
143 bir araya toplayan <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi kullanılmaktadır.</p>
145 <p>Erişim günlüğünün girdi biçemi kolayca isteğe göre
146 düzenlenebilmektedir. Biçemi belirtmekte kullanılan biçem dizgesi, C
147 tarzı printf(1) biçem dizgesini andırır. Sonraki bölümlerde bazı
148 örneklere yer verilmiştir. Biçem dizgesini oluşturan belirteçlerin tam
149 listesi için <code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code> belgesinin <a href="mod/mod_log_config.html#formats">Günlük Girdilerinin
150 Kişiselleştirilmesi</a> bölümüne bakınız.</p>
152 <h3><a name="common" id="common">Ortak Günlük Biçemi (OGB)</a></h3>
155 <p>Erişim günlüğü için sıklıkla kullanılan bir yapılandırma:</p>
157 <div class="example"><p><code>
158 LogFormat "%h %l %u %t \"%r\" %>s %b" common<br />
159 CustomLog logs/access_log common
162 <p>İlk satırda belli bir biçem dizgesi için <code>common</code> diye bir
163 <em>takma ad</em> tanımlanmaktadır. Biçem dizgesi, sunucuya hangi
164 belli bir bilgi parçalarını günlükleyeceğini söyleyen % imli biçem
165 belirteçlerinden oluşur. Biçem dizgesine ayrıca dizgesel sabitler de
166 yerleştirilebilir ve bunlar erişim günlüğüne oldukları gibi
167 kopyalanırlar. Biçem dizgesi içinde çift tırnak karakteri (") biçem
168 dizgesini vaktinden önce sonlandırmaması için ters bölü çizgisi ile
169 öncelenmelidir. Biçem dizgesi ayrıca, satır sonlarını belirtmek için
170 "<code>\n</code>" ve sekmeleri belirtmek için "<code>\t</code>"
171 denetim karakterlerini de içerebilir.</p>
173 <p><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi
174 evvelce tanımlanmış bir <em>takma adı</em> kullanarak yeni bir günlük
175 dosyası tanımlar. Erişim günlüğünün dosya ismi bölü çizgisi ile
176 başlamadıkça dosya yolunun <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code> değerine göreli olduğu varsayılır.</p>
178 <p>Yukarıdaki yapılandırma günlük dosyasına girdileri Ortak Günlük
179 Biçemi (Common Log Format) adı verilen standart biçemde yazar.
180 Bu standart biçem başka HTTP sunucuları tarafından da kullanılır ve
181 çoğu günlük inceleme yazılımı tarafından tanınır. Ortak Günlük
182 Biçeminde üretilen günlük girdileri şöyle görünür:</p>
184 <div class="example"><p><code>
185 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
186 /apache_pb.gif HTTP/1.0" 200 2326
189 <p>Bu günlük girdisini parça parça açıklayalım:</p>
192 <dt><code>127.0.0.1</code> (<code>%h</code>)</dt>
194 <dd>Bu, sunucuya istek yapan istemcinin (uzak konağın) IP adresidir.
195 Eğer <code class="directive"><a href="./mod/core.html#hostnamelookups">HostnameLookups</a></code>
196 yönergesine <code>On</code> değeri atanmışsa sunucu bu IP adresi
197 için DNS sorgusu yapacak ve IP adresi yerine bulduğu konak ismini
198 yazmaya çalışacaktır. Bununla birlikte, bu işlem sunucuyu epeyce
199 yavaşlattığından önerilmemektedir. Konak isimlerini saptamak için en
200 iyisi günlük girdilerini <code class="program"><a href="./programs/logresolve.html">logresolve</a></code> gibi bir
201 günlük işlemcisinden geçirmektir. Burada raporlanan IP adresi
202 doğrudan istemcinin IP adresi olmayabilir. Eğer sunucu ile istemci
203 arasında bir vekil sunucu varsa bu IP adresi, vekil sunucunun IP
204 adresi olacaktır.</dd>
206 <dt><code>-</code> (<code>%l</code>)</dt>
208 <dd>Çıktıdaki bir "tire" imi istenen bilgi parçasının mevcut olmadığı
209 anlamına gelir. Bu durumda, mevcut olmayan bilgi istemci makine
210 üzerinde <code>identd</code> tarafından belirlenen istemcinin RFC
211 1413 kimliğidir. Bu bilgi oldukça güvenilmezdir ve sıkıca denetlenen
212 iç ağlar haricinde hemen hemen asla kullanılmamalıdır. Apache,
213 <code class="directive"><a href="./mod/core.html#identitycheck">IdentityCheck</a></code> yönergesine
214 <code>On</code> değeri atanmış olmadıkça bu bilgiyi saptamaya
217 <dt><code>frank</code> (<code>%u</code>)</dt>
219 <dd>Bu, belge isteğinde bulunan kişinin HTTP kimlik doğrulamasıyla
220 saptanan kullanıcı kimliğidir. Bu değer CGI betiklerine
221 <code>REMOTE_USER</code> ortam değişkeni ile sağlanır. Eğer istek
222 için durum kodu 401 ise (aşağıya bakınız) henüz kullanıcının kimliği
223 doğrulanmamış olacağından bu değere güvenilmemelidir. Eğer belge
224 parola korumalı değilse günlüğün bu kısmı da yukarıdaki gibi
225 "<code>-</code>" olacaktır.</dd>
227 <dt><code>[10/Oct/2000:13:55:36 -0700]</code>
228 (<code>%t</code>)</dt>
230 <dd>İsteğin alındığı tarih ve saat. Biçemi şöyledir:
233 <code>[gün/ay/yıl:saat:dakika:saniye dilim]<br />
234 gün = 2 hane<br />
235 ay = 3 harf<br />
236 yıl = 4 hane<br />
237 saat = 2 hane<br />
238 dakika = 2 hane<br />
239 saniye = 2 hane<br />
240 dilim = (`+' | `-') 4 hane</code>
242 Günlük biçem dizgesinde zaman gösterim biçemini
243 <code>%{<em>biçem</em>}t</code> şeklinde belirtmek de mümkündür.
244 Buradaki <code><em>biçem</em></code> dizgesi, stardart C
245 kütüphanesindeki <code>strftime(3)</code> işlevi için tanımlanmış
246 biçem belirteçleriyle oluşturulabilir.
249 <dt><code>"GET /apache_pb.gif HTTP/1.0"</code>
250 (<code>\"%r\"</code>)</dt>
252 <dd>İstemciden alınan istek satırının çift tırnaklar arasında
253 gösterilmesi istenmiştir. İstek satırı en yararlı bilgi parçalarını
254 içerir. Birincisi, istemci tarafından kullanılan yöntem
255 <code>GET</code>’miş. İkinci olarak istemci
256 <code>/apache_pb.gif</code> dosyasını istemiş ve üçüncü olarak
257 istemci <code>HTTP/1.0</code> protokolünü kullanmış. İstek satırının
258 bazı parçalarını bağımsız olarak da günlüklemek mümkündür. Örneğin,
259 "<code>%m %U%q %H</code>" dizgesi, yöntem, yol, sorgu dizgesi ve
260 protokolü kaydedecektir; bu dizge "<code>%r</code>" biçem
261 belirtecinin tek başına yaptığı işi yapar.</dd>
263 <dt><code>200</code> (<code>%>s</code>)</dt>
265 <dd>Bu, sunucunun istemciye gönderdiği durum kodudur. İsteğin
266 başarıyla yerine getirilip getirilmediğini gösterdiği için bu bilgi
267 çok değerlidir. Durum kodu 2 ile başlıyorsa istek başarıyla yerine
268 getirilmiştir, 3 ile başlıyorsa yönlendirilmiştir, 4 ile başlıyorsa
269 istemci tarafında bir hata oluşmuştur, 5 ile başlıyorsa sunucuda bir
270 hata oluşmuştur. Olası hata kodlarının tam listesi <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">RFC2616 Hiper
271 Metin Aktarım Protokolü</a>nün 10. bölümünde bulunabilir.</dd>
273 <dt><code>2326</code> (<code>%b</code>)</dt>
275 <dd>Son parça istemciye döndürülen nesnenin yanıt başlığı hariç
276 uzunluğudur. Eğer istemciye bir içerik döndürülmemişse bu değer
277 "<code>-</code>" olacaktır. Bunun yerine günlüğe "<code>0</code>"
278 yazdırmak için <code>%B</code> belirtecini kullanınız.</dd>
282 <h3><a name="combined" id="combined">Birleşik Günlük Biçemi</a></h3>
285 <p>Sıklıkla kullanılan diğer bir biçem dizgesi Birleşik Günlük Biçemi
286 (Combined Log Format) olup şöyle kullanılabilir:</p>
288 <div class="example"><p><code>
289 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
290 \"%{User-agent}i\"" combined<br />
291 CustomLog log/access_log combined
294 <p>Bu biçem ilaveten 2 alan içermesi dışında Ortak Günlük Biçemi ile
295 aynıdır. İlave alanların ikisi de <code>%{<em>başlık</em>}i</code>
296 biçeminde olup buradaki <code><em>başlık</em></code>, HTTP isteğindeki
297 başlık alanlarından biridir. Bu biçemin kullanıldığı bir erişim
298 günlüğü girdisi şöyle olurdu:</p>
300 <div class="example"><p><code>
301 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
302 /apache_pb.gif HTTP/1.0" 200 2326
303 "http://www.example.com/start.html" "Mozilla/4.08 [en]
310 <dt><code>"http://www.example.com/start.html"</code>
311 (<code>\"%{Referer}i\"</code>)</dt>
313 <dd>HTTP istek başlığı "Referer". İstemcinin raporladığı isteğin
314 kaynaklandığı URI. (Bu isteğin yapılmasını sağlayan bağlantıyı
315 içeren URL veya istek bir sayfanın bileşenleri ile ilgiliyse istenen
316 sayfanın URL’si olabilir.)</dd>
318 <dt><code>"Mozilla/4.08 [en] (Win98; I ;Nav)"</code>
319 (<code>\"%{User-agent}i\"</code>)</dt>
321 <dd>Tarayıcı kimliğini içeren HTTP istek başlığı. Bu istemcinin
322 tarayıcısının raporladığı kendi tanıtım bilgisidir.</dd>
326 <h3><a name="multiple" id="multiple">Çok Sayıda Erişim Günlüğü</a></h3>
329 <p>Yapılandırma dosyasında çok sayıda <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi kullanarak çok
330 sayıda erişim günlüğü kolayca oluşturulabilir. Örneğin aşağıdaki
331 yönergelerle 3 tane erişim günlüğü oluşturulacaktır. İlki temel OGB
332 bilgisini içerirken diğer ikisi isteğin kaynaklandığı yeri ve tarayıcı
333 kimliğini içerir. Son iki <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> satırı ayrıca, <code>ReferLog</code> ve
334 <code>AgentLog</code> yönergelerinin etkilerinin nasıl taklit
335 edileceğini de göstermektedir.</p>
337 <div class="example"><p><code>
338 LogFormat "%h %l %u %t \"%r\" %>s %b" common<br />
339 CustomLog logs/access_log common<br />
340 CustomLog logs/referer_log "%{Referer}i -> %U"<br />
341 CustomLog logs/agent_log "%{User-agent}i"
344 <p>Bu örnek ayrıca, <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> yönergesi ile bir takma ad tanımlamanın şart
345 olmadığını da göstermektedir. Günlük biçemi doğrudan <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesinde
349 <h3><a name="conditional" id="conditional">Şarta Bağlı Günlükler</a></h3>
352 <p>Bazı durumlarda istemcinin yaptığı isteğe bağlı olarak erişim
353 günlüğünde belli girdilerin dışlanması gerekebilir. Bu, <a href="env.html">ortam değişkenleri</a> sayesinde kolayca yerine
354 getirilebilir. Önce isteğin belli koşulları sağladığını belirten bir
355 ortam değişkeni ataması yapılır. Bu işlem <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> yönergesi ile yapılır.
356 Sonra da, ortam değişkenine bağlı olarak isteklerin günlüğe dahil
357 edilip edilmeyeceği <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesinin
358 <code>env=</code> deyimi kullanılarak belirtilir. Bazı örnekler:</p>
360 <div class="example"><p><code>
361 # yerel konaktan kaynaklanan istekleri imleyelim<br />
362 SetEnvIf Remote_Addr "127\.0\.0\.1" kaydetme<br />
363 # robots.txt dosyası isteklerini imleyelim<br />
364 SetEnvIf Request_URI "^/robots\.txt$" kaydetme<br />
365 # Kalanları günlüğe kaydedelim<br />
366 CustomLog logs/access_log common env=!kaydetme
369 <p>Başka bir örnek olarak, Türkçe belge isteklerini bir dosyaya diğer
370 dillerdeki istekleri başka bir dosyaya kaydedelim.</p>
372 <div class="example"><p><code>
373 SetEnvIf Accept-Language "tr" turkce<br />
374 CustomLog logs/turkce_log common env=turkce<br />
375 CustomLog logs/diger_diller_log common env=!turkce
378 <p>Şarta bağlı günlük kaydının çok esnek ve güçlü olabileceğini
379 göstermiş olsak da günlük içeriğini denetlemenin tek yolu bu değildir.
380 Günlük dosyaları sunucu etkinliğini eksiksiz olarak kaydedebildikleri
381 takdirde daha yararlı olurlar. Günlük dosyalarını sonradan işleme tabi
382 tutarak istenmeyen girdileri kaldırılmış bir kopya almak hem kolay hem
383 de daha yararlıdır.</p>
385 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
386 <div class="section">
387 <h2><a name="rotation" id="rotation">Günlük Çevrimi</a></h2>
390 <p>Yükü ağır sunucularda günlük dosyalarına kaydedilen bilginin miktarı
391 çok büyük boyutlara ulaşabilir. 10.000 istek içeren bir erişim günlüğü
392 yaklaşık 1MB yer kaplar. Etkin günlük dosyasını belirli aralıklarla
393 değiştirmek veya silmek gerekebilir. Apache çalışırken dosyayı sürekli
394 açık tuttuğu ve yazdığı için bu işlem sunucu çalışırken yapılamaz. Bu
395 bakımdan, günlük dosyası değiştirildikten veya silindikten sonra yeni
396 dosyanın açılması için <a href="stopping.html">sunucunun yeniden
397 başlatılması</a> gerekir.</p>
399 <p><a href="stopping.html#graceful">Nazikçe yeniden başlatmak</a>
400 suretiyle sunucunun, mevcut ve bekleyen bağlantıları kaybetmeden yeni
401 günlük dosyalarını açması sağlanabilir. Bununla birlikte, bu işlem
402 sırasında sunucunun eski isteklere sunumu bitirene kadar eski günlük
403 dosyalarına yazmaya devam edebilmesi gerekir. Bu bakımdan, yeniden
404 başlatmanın ardından eski günlük dosyaları üzerinde bir işlem yapmadan
405 önce biraz beklemek gerekir. Günlük dosyalarını döndürürken kullanılan
406 senaryolarda genellikle eski günlük dosyaları yer kazanmak için
409 <div class="example"><p><code>
410 mv access_log access_log.old<br />
411 mv error_log error_log.old<br />
412 apachectl graceful<br />
414 gzip access_log.old error_log.old
417 <p>Günlük çevrimi yapmanın başka bir yolu da sonraki bölümde açıklandığı
418 gibi <a href="#piped">borulu günlükler</a> kullanmaktır.</p>
419 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
420 <div class="section">
421 <h2><a name="piped" id="piped">Borulu Günlükler</a></h2>
424 <p>Apache httpd hata ve erişim günlüklerini doğrudan bir dosyaya yazmak
425 yerine bir boru üzerinden başka bir sürece yazabilir. Bu yetenek ana
426 sunucuya herhangi bir kod eklemeksizin günlükleme esnekliğini şaşırtıcı
427 derecede arttırır. Günlükler boruya yazılmak istenirse dosya ismini boru
428 karakteriyle ("<code>|</code>") değiştirip ardına günlük girdilerini
429 standart girdisinden kabul edecek programın ismini eklemek yeterlidir.
430 Apache sunucusu başlatıldığı zaman borulu günlük işlemini de
431 başlatacaktır. Eğer sunucu çalışırken günlükleri kabul eden süreç
432 çökerse Apache bu programı yeniden başlatır. (Bu son özelliği sebebiyle
433 bu tekniğe “güvenilir borulu günlükleme” adını veriyoruz.)</p>
435 <p>Borulu günlük süreçleri ana Apache httpd süreci tarafından başlatılır
436 ve bu süreçler ana Apache httpd sürecinin kullanıcı kimliğini miras
437 alırlar. Yani borulu günlükleme programları aslında root tarafından
438 çalıştırılmış gibi olur. Bu bakımdan, bu programları basit ve güvenilir
439 kılmak çok önemlidir.</p>
441 <p>Borulu günlüklerin önemli kullanım alanlarından biri de sunucuyu
442 yeniden başlatmak gerekmeksizin günlük çevrimini mümkün kılmaktır.
443 Apache HTTP sunucusu bu amaçla kullanılmak üzere
444 <code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code> diye bir program içerir. Örneğin,
445 günlükleri 24 saatte bir döndürmek isterseniz bunu şöyle
448 <div class="example"><p><code>
449 CustomLog "|/usr/local/apache/bin/rotatelogs
450 /var/log/access_log 86400" common
453 <p>Borunun diğer ucundaki süreci başlatacak komutun tırnak içine
454 alındığına dikkat ediniz. Bu örnekler erişim günlüğü için verilmişse de
455 aynı teknik hata günlüğü için de kullanılabilir.</p>
457 <p>Hariçten bir uygulama olarak <a href="http://www.cronolog.org/">cronolog</a> isminde buna benzer ancak
458 çok daha esnek bir program daha vardır.</p>
460 <p>Borulu günlükler de şarta bağlı günlükleme kadar güçlü olmakla beraber
461 çevrimdışı ardıl işlemler gibi daha basit çözümler için
462 kullanılmamalıdır.</p>
463 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
464 <div class="section">
465 <h2><a name="virtualhost" id="virtualhost">Sanal Konaklar</a></h2>
468 <p>Bir sunucu çok sayıda <a href="vhosts/">sanal konak</a> ile hizmet
469 sunarken bunların günlük kayıtları için çeşitli seçenekler mevcuttur.
470 İlk seçenekte, sanki sunucu tek bir konakla hizmet sunuyormuş gibi
471 günlük kaydı yapılır. Günlükleme yönergelerini <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> bölümlerinin dışına, ana sunucu
472 bağlamına yerleştirerek tüm isteklerin aynı erişim ve hata günlüğüne
473 yazılmasını sağlamak olasıdır. Bu teknik, tek tek sanal konaklar için
474 kolayca istatistik toplamaya izin vermez.</p>
476 <p>Eğer <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>
477 veya <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> yönergesi bir
478 <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> bölümüne
479 yerleştirilirse bu sanal konağa bütün erişimler veya hatalar belirtilen
480 dosyaya günlüklenecektir. Böyle günlükleme yönergeleri içermeyen sanal
481 konakların günlükleri hala ana sunucunun hata ve erişim günlüklerine
482 yazılmaya devam edecektir. Bu teknik az sayıda sanal konak barındıran
483 sunucular için çok kullanışlıdır. Fakat sanal konak sayısı çok fazlaysa
484 bu teknikle günlük dosyalarını yönetmek çok karmaşık bir hal alabilir.
485 Ayrıca, <a href="vhosts/fd-limits.html">yetersiz dosya tanıtıcısı</a>
486 sorunlarıyla çok sık karşılaşılabilir.</p>
488 <p>Erişim günlükleri için çok az bir fedakarlıkla çok iyi bir çözüm vardır.
489 Günlük biçemine sanal konaklarla ilgili bilgi eklemek suretiyle tüm
490 konakların aynı günlük dosyasını kullanmaları olasıdır. Böylece günlük
491 dosyası sonradan her sanal konak için ayrı bir dosya oluşturmak üzere
492 ayrıştırılabilir. Örneğin, bu işlem için şu yönergeler kullanılıyor
495 <div class="example"><p><code>
496 LogFormat "%v %l %u %t \"%r\" %>s %b"
498 CustomLog logs/access_log ortaksankon
501 <p><code>%v</code> belirteci isteği sunan sanal konağın ismini günlüğe
502 yazmak için kullanılır. Daha sonra <a href="programs/other.html">split-logfile</a> gibi bir program
503 kullanarak, bu dosyadan her sanal konak için ayrı birer dosya elde
505 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
506 <div class="section">
507 <h2><a name="other" id="other">Diğer Günlük Dosyaları</a></h2>
510 <table class="related"><tr><th>İlgili Modüller</th><th>İlgili Yönergeler</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code></li><li><code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_log_forensic.html#forensiclog">ForensicLog</a></code></li><li><code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewritelog">RewriteLog</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptlogbuffer">ScriptLogBuffer</a></code></li><li><code class="directive"><a href="./mod/mod_cgi.html#scriptloglength">ScriptLogLength</a></code></li></ul></td></tr></table>
512 <h3>Gönderilen ve alınan bayt sayısının günlüklenmesi</h3>
515 <p><code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code> modülü <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> yönergesinde kullanılan
516 biçem belirteçlerine alınan ve gönderilen bayt sayıları için iki
517 belirteç (%I ve %O) ekler.</p>
523 <p><code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code> modülü istemci isteklerinin kanıt
524 olarak kullanılmak amacıyla günlüklenmesini sağlar. Günlükleme her
525 istek için isteğe hizmet sunmadan önce ve sonra olmak üzere iki defa
526 yapılır. Böylece günlük dosyasında başarılı her istek için iki satır
527 bulunur. Adli günlükleme çok sıkı kurallara tabi olup
528 kişiselleştirilemez. Güvenlik ve hata ayıklama aracı olarak yararlı
532 <h3><a name="pidfile" id="pidfile">PID Dosyası</a></h3>
535 <p>Apache httpd başlatıldığında, ana httpd sürecinin kimliği (PID)
536 <code>logs/httpd.pid</code> dosyasına kaydedilir. Bu dosyanın ismi
537 <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> yönergesi ile
538 değiştirilebilir. Bu süreç kimliği sistem yöneticisi tarafından ana
539 sürece sinyal göndererek artalan sürecini sonlandırmak veya yeniden
540 başlatmak için kullanılır. Windows üzerinde bu işlem için
541 <code>-k</code> komut satırı seçeneği kullanılır. Bu konuda daha
542 ayrıntılı bilgi edinmek için <a href="stopping.html">Durdurma ve
543 Yeniden Başlatma</a> belgesine bakınız.</p>
546 <h3><a name="scriptlog" id="scriptlog">Betik Günlüğü</a></h3>
549 <p><code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code> yönergesi CGI
550 betiklerinin girdi ve çıktılarını kaydetmenizi mümkün kılmak suretiyle
551 hata ayıklamaya yardımcı olur. Bu sadece deneysel amaçla kullanılmalı,
552 asıl sunucuya uygulanmamalıdır. <a href="mod/mod_cgi.html">mod_cgi</a>
553 belgesinde daha fazla bilgi bulunabilir.</p>
556 <h3><a name="rewritelog" id="rewritelog">Yeniden Yazım Günlüğü</a></h3>
559 <p>Güçlü ve karmaşık <a href="mod/mod_rewrite.html">mod_rewrite</a>
560 özellikleri kullanılırken, hata ayıklamaya yardımcı olmak için
561 <code class="directive"><a href="./mod/mod_rewrite.html#rewritelog">RewriteLog</a></code> yönergesini
562 kullanmak gerekebilir. Yönerge, günlük dosyasında yeniden yazım
563 motorunun istekleri nasıl dönüştürdüğüyle ilgili ayrıntılı bir döküm
564 üretir. Ayrıntı seviyesi <code class="directive"><a href="./mod/mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></code> yönergesi ile belirlenir.</p>
567 <div class="bottomlang">
568 <p><span>Mevcut Diller: </span><a href="./en/logs.html" hreflang="en" rel="alternate" title="English"> en </a> |
569 <a href="./fr/logs.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
570 <a href="./ja/logs.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
571 <a href="./ko/logs.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
572 <a href="./tr/logs.html" title="Türkçe"> tr </a></p>
573 </div><div id="footer">
574 <p class="apache">Copyright 2008 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
575 <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/directives.html">Yönergeler</a> | <a href="./faq/">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div>