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 Sürüm 2.5</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" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
12 <script src="./style/scripts/prettify.min.js" type="text/javascript">
15 <link href="./images/favicon.ico" rel="shortcut icon" /></head>
16 <body id="manual-page"><div id="page-header">
17 <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/quickreference.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p>
18 <p class="apache">Apache HTTP Sunucusu Sürüm 2.5</p>
19 <img alt="" src="./images/feather.gif" /></div>
20 <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
22 <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.5</a></div><div id="page-content"><div id="preamble"><h1>Günlük Dosyaları</h1>
24 <p><span>Mevcut Diller: </span><a href="./en/logs.html" hreflang="en" rel="alternate" title="English"> en </a> |
25 <a href="./fr/logs.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
26 <a href="./ja/logs.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
27 <a href="./ko/logs.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
28 <a href="./tr/logs.html" title="Türkçe"> tr </a></p>
30 <div class="outofdate">Bu çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.</div>
32 <p>Bir HTTP sunucusunu verimli şekilde yönetebilmek için oluşabilecek
33 sorunlardan başka sunucunun başarımı ve etkinliği hakkında da bazı geri
34 bildirimler almak gerekir. Apache HTTP Sunucusu çok kapsamlı ve esnek
35 bir günlükleme yeteneğine sahiptir. Bu belgede sunucunun günlükleme
36 yeteneğini nasıl yapılandıracağınızdan ve günlük kayıtlarını nasıl
37 yorumlayacağınızdan bahsedilecektir.</p>
39 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#overview">Giriş</a></li>
40 <li><img alt="" src="./images/down.gif" /> <a href="#security">Güvenlik Uyarısı</a></li>
41 <li><img alt="" src="./images/down.gif" /> <a href="#errorlog">Hata Günlüğü</a></li>
42 <li><img alt="" src="./images/down.gif" /> <a href="#permodule">Modüllere göre günlükleme</a></li>
43 <li><img alt="" src="./images/down.gif" /> <a href="#accesslog">Erişim Günlüğü</a></li>
44 <li><img alt="" src="./images/down.gif" /> <a href="#rotation">Günlük Çevrimi</a></li>
45 <li><img alt="" src="./images/down.gif" /> <a href="#piped">Borulu Günlükler</a></li>
46 <li><img alt="" src="./images/down.gif" /> <a href="#virtualhost">Sanal Konaklar</a></li>
47 <li><img alt="" src="./images/down.gif" /> <a href="#other">Diğer Günlük Dosyaları</a></li>
48 </ul><ul class="seealso"><li><a href="#comments_section">Yorum</a></li></ul></div>
49 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
51 <h2><a name="overview" id="overview">Giriş</a></h2>
54 <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_log_forensic.html">mod_log_forensic</a></code></li><li><code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li></ul></td><td /></tr></table>
56 <p>Apache HTTP Sunucusu, isteğin ilk alınışından itibaren, URL eşleme
57 işlemleri, bağlantının son çözümlemesi ve bu işlemler sırasına ortaya çıkan
58 hatalar da dahil olmak üzere sunucunuzda meydana gelen herşeyi günlüklemek
59 için çok çeşitli mekanizmalar içerir. Buna ek olarak, günlükleme
60 yetenekleri sağlayan üçüncü parti modüller de kullanılabilir veya mevcut
61 günlük dosyalarına girdiler enjekte edilebilir. Ayrıca, CGI programları,
62 PHP betikleri ve benzerleri sunucu hata günlüğüne kendi iletilerini
65 <p>Bu belgede Apache HTTP Sunucusunun standart parçası olan günlükleme
66 modülleri hakkında bilgi verilecektir.</p>
68 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
70 <h2><a name="security" id="security">Güvenlik Uyarısı</a></h2>
73 <p>Apache httpd’nin günlük dosyalarını yazdığı dizine yazabilen birinin sunucuyu
74 başlatan kullanıcı kimliğine (bu genellikle root olur) erişim
75 kazanabileceğine hemen hemen kesin gözüyle bakılabilir. Sonuçlarının
76 neler olacağını kestiremiyorsanız günlüklerin yazıldığı dizinde <em>hiç
77 kimseye</em> yazma erişimi vermeyin; ayrıntılı bilgi için <a href="misc/security_tips.html">güvenlik ipuçları</a> belgesine
80 <p>Buna ilaveten, günlük dosyaları istemci tarafından sağlanmış bilgiler
81 de içerebilir. Bu nedenle, kötü niyetli istemcilerin günlük dosyalarına
82 denetim karakterleri girmeleri olasılığına karşı ham günlükler ele
83 alınırken dikkatli olunmalıdır.</p>
84 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
86 <h2><a name="errorlog" id="errorlog">Hata Günlüğü</a></h2>
88 <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/core.html">core</a></code></li></ul></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#errorlogformat">ErrorLogFormat</a></code></li><li><code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code></li></ul></td></tr></table>
90 <p>İsmi ve yeri <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> yönergesi
91 ile belirtilen sunucu hata günlüğü, en önemli günlük dosyasıdır. Apache
92 httpd tarafından istekler işlenirken saptanan hatalar ve tanı bilgileri
93 bu dosyaya gönderilir. Sunucuyu başlatırken veya sunucu çalışırken bir
94 sorunla karşılaşıldığında, neyin yanlış gittiğini öğrenmek için
95 bakılacak ilk yer burasıdır. Günlük kaydı çoğunlukla sorunun nasıl
96 düzeltileceği ile ilgili ayrıntıları da içerir.</p>
98 <p>Hata günlüğü normal olarak bir dosyaya yazılır (genellikle, dosyanın
99 ismi Unix sistemlerinde <code>error_log</code>, OS/2 ve Windows’ta ise
100 <code>error.log</code>’dur). Ayrıca, Unix sistemlerinde sunucunun
101 hataları <code>syslog</code>’a veya <a href="#piped">borulamak suretiyle
102 bir programa</a> aktarması da mümkündür.</p>
104 <p>Hata günlüğünün biçemi <code class="directive"><a href="./mod/core.html#errorlogformat">ErrorLogFormat</a></code> yönergesi ile belirlenir. Bu yönergeyi
105 kullanarak günlüklenen değerleri özelleştirebilirsiniz. Bir biçem
106 belirtmezseniz öntanımlı biçem kullanılır. Örnek tipik bir hata iletisi
109 <div class="example"><p><code>
110 [Fri Sep 09 10:42:29.902022 2011] [core:error] [pid 35708:tid 4328636416]
111 [client 72.15.99.187] Dosya yok: /usr/local/apache2/htdocs/favicon.ico
114 <p>Günlük girdisinin ilk öğesi iletinin yazıldığı tarih ve saatten oluşur.
115 İkincisi iletiyi üreten modülün ismi (bu durumda: core) ile raporlanan
116 bilginin önem derecesini belirtir. Bunu varsa sürecin kimliği ve yine
117 varsa evre kimliği izler. Sonraki öğe hatanın üretilmesine sebep olan
118 istemcinin IP adresini içerir. Kalanı iletinin kendisidir (duruma
119 bakılırsa bir dosyaya yapılan istek yerine getirilememiş).</p>
121 <p>Hata günlüğünde görünebilecek ileti çeşitliliği oldukça fazladır. Çoğu
122 yukarıdaki örneğin benzeridir. Hata günlüğü ayrıca, CGI betiklerinin
123 hata ayıklama çıktılarını da içerir. Bir CGI betiği tarafından standart
124 hataya (<code>stderr</code>) yazılan her türlü bilgi doğrudan hata
125 günlüğüne kopyalanır.</p>
127 <p>Hata günlüğüne ve erişim günlüğüne <code>%L</code> dizgeciği konularak
128 erişim günlüğündeki girdi ile hata günlüğündeki girdiyi ilişkilendirecek
129 bir günlük girdisi kimliği oluşturulabilir.
130 <code class="module"><a href="./mod/mod_unique_id.html">mod_unique_id</a></code> yüklüyse günlük girdisi kimliği olarak
131 onun eşsiz istek kimliği de kullanılır.</p>
133 <p>Sunucuyu denerken olası sorunlara karşı hata günlüğünü sürekli
134 izlemelisiniz. Unix sistemlerinde bunu şöyle bir komutla
135 sağlayabilirsiniz:</p>
137 <div class="example"><p><code>
140 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
141 <div class="section">
142 <h2><a name="permodule" id="permodule">Modüllere göre günlükleme</a></h2>
145 <p><code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code> yönergesi, günlük
146 iletisinin üretilmesine sebep olan modüle bağlı bir önem seviyesi
147 belirleyebilmenizi sağlar. Bu yolla sorun yaşadığınız modülle ilgili
148 günlük musluklarını sonuna kadar açabiliri ek olarak ilgilendiğiniz diğer
149 modüllerle ilgili ayrıntıları da edinebilirsiniz. Özellikle
150 <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> veya <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> gibi
151 modüllerde yapılmak isteneni denerken neler olup bittiğini ayrıntılarıyla
152 bilmek istediğiniz durumlarda kullanışlıdır.</p>
154 <p>Bunu <code class="directive">LogLevel</code> yönergesinde modülün ismini
155 belirterek yapabilirsiniz:</p>
157 <div class="example"><p><code>
158 LogLevel info rewrite:trace5
161 <p>Bu satırla ana <code class="directive">LogLevel</code> info'ya ayarlanırken
162 <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> için musluk <code>trace5</code> seviyesine
163 kadar açılmaktadır.</p>
165 <div class="note">Bu yönerge, Apache HTTP Sunucusunun evvelki sürümlerinde mevcut olan
166 <code>RewriteLog</code> gibi günlükleme modüllerinin yerini almıştır.
168 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
169 <div class="section">
170 <h2><a name="accesslog" id="accesslog">Erişim Günlüğü</a></h2>
173 <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>
175 <p>Sunucu erişim günlüğü sunucu tarafından işleme alınan tüm istekleri
176 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.
177 <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> yönergesi ile
178 günlük içeriğini kişiselleştirmek mümkündür. Bu bölümde sunucunun
179 bilgileri erişim günlüğüne kaydetmesi için nasıl yapılandırılacağından
182 <p>Şüphesiz, bilginin erişim günlüğünde saklanması günlük yönetiminde ilk
183 adımı oluşturur. Sonraki adım yararlı istatistikleri üretmek için bu
184 bilgiyi incelemektir. Günlük incelemesi bu belgenin kapsamına dahil
185 değildir ve aslında bu işlem sunucunun yaptığı işlerden biri değildir.
186 Bu konu ve günlük incelemesi yapan uygulamalar hakkında daha ayrıntılı
187 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>
189 <p>Apache httpd’nin çeşitli sürümlerinde erişim günlüklerini denetlemek
190 için kullanılan diğer modüller ve yönergeler arasında mod_log_referer,
191 mod_log_agent modülleri ve <code>TransferLog</code> yönergesi
192 sayılabilir. Artık, daha eski tüm diğer yönergelerin işlevselliklerini
193 bir araya toplayan <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi kullanılmaktadır.</p>
195 <p>Erişim günlüğünün girdi biçemi kolayca isteğe göre
196 düzenlenebilmektedir. Biçemi belirtmekte kullanılan biçem dizgesi, C
197 tarzı printf(1) biçem dizgesini andırır. Sonraki bölümlerde bazı
198 örneklere yer verilmiştir. Biçem dizgesini oluşturan belirteçlerin tam
199 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
200 Kişiselleştirilmesi</a> bölümüne bakınız.</p>
202 <h3><a name="common" id="common">Ortak Günlük Biçemi (OGB)</a></h3>
205 <p>Erişim günlüğü için sıklıkla kullanılan bir yapılandırma:</p>
207 <div class="example"><p><code>
208 LogFormat "%h %l %u %t \"%r\" %>s %b" common<br />
209 CustomLog logs/access_log common
212 <p>İlk satırda belli bir biçem dizgesi için <code>common</code> diye bir
213 <em>takma ad</em> tanımlanmaktadır. Biçem dizgesi, sunucuya hangi
214 belli bir bilgi parçalarını günlükleyeceğini söyleyen % imli biçem
215 belirteçlerinden oluşur. Biçem dizgesine ayrıca dizgesel sabitler de
216 yerleştirilebilir ve bunlar erişim günlüğüne oldukları gibi
217 kopyalanırlar. Biçem dizgesi içinde çift tırnak karakteri (") biçem
218 dizgesini vaktinden önce sonlandırmaması için ters bölü çizgisi ile
219 öncelenmelidir. Biçem dizgesi ayrıca, satır sonlarını belirtmek için
220 "<code>\n</code>" ve sekmeleri belirtmek için "<code>\t</code>"
221 denetim karakterlerini de içerebilir.</p>
223 <p><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi
224 evvelce tanımlanmış bir <em>takma adı</em> kullanarak yeni bir günlük
225 dosyası tanımlar. Erişim günlüğünün dosya ismi bölü çizgisi ile
226 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>
228 <p>Yukarıdaki yapılandırma günlük dosyasına girdileri Ortak Günlük
229 Biçemi (Common Log Format) adı verilen standart biçemde yazar.
230 Bu standart biçem başka HTTP sunucuları tarafından da kullanılır ve
231 çoğu günlük inceleme yazılımı tarafından tanınır. Ortak Günlük
232 Biçeminde üretilen günlük girdileri şöyle görünür:</p>
234 <div class="example"><p><code>
235 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
236 /apache_pb.gif HTTP/1.0" 200 2326
239 <p>Bu günlük girdisini parça parça açıklayalım:</p>
242 <dt><code>127.0.0.1</code> (<code>%h</code>)</dt>
244 <dd>Bu, sunucuya istek yapan istemcinin (uzak konağın) IP adresidir.
245 Eğer <code class="directive"><a href="./mod/core.html#hostnamelookups">HostnameLookups</a></code>
246 yönergesine <code>On</code> değeri atanmışsa sunucu bu IP adresi
247 için DNS sorgusu yapacak ve IP adresi yerine bulduğu konak ismini
248 yazmaya çalışacaktır. Bununla birlikte, bu işlem sunucuyu epeyce
249 yavaşlattığından önerilmemektedir. Konak isimlerini saptamak için en
250 iyisi günlük girdilerini <code class="program"><a href="./programs/logresolve.html">logresolve</a></code> gibi bir
251 günlük işlemcisinden geçirmektir. Burada raporlanan IP adresi
252 doğrudan istemcinin IP adresi olmayabilir. Eğer sunucu ile istemci
253 arasında bir vekil sunucu varsa bu IP adresi, vekil sunucunun IP
254 adresi olacaktır.</dd>
256 <dt><code>-</code> (<code>%l</code>)</dt>
258 <dd>Çıktıdaki bir "tire" imi istenen bilgi parçasının mevcut olmadığı
259 anlamına gelir. Bu durumda, mevcut olmayan bilgi istemci makine
260 üzerinde <code>identd</code> tarafından belirlenen istemcinin RFC
261 1413 kimliğidir. Bu bilgi oldukça güvenilmezdir ve sıkıca denetlenen
262 iç ağlar haricinde hemen hemen asla kullanılmamalıdır. Apache,
263 <code class="directive"><a href="./mod/mod_ident.html#identitycheck">IdentityCheck</a></code> yönergesine
264 <code>On</code> değeri atanmış olmadıkça bu bilgiyi saptamaya
267 <dt><code>frank</code> (<code>%u</code>)</dt>
269 <dd>Bu, belge isteğinde bulunan kişinin HTTP kimlik doğrulamasıyla
270 saptanan kullanıcı kimliğidir. Bu değer CGI betiklerine
271 <code>REMOTE_USER</code> ortam değişkeni ile sağlanır. Eğer istek
272 için durum kodu 401 ise (aşağıya bakınız) henüz kullanıcının kimliği
273 doğrulanmamış olacağından bu değere güvenilmemelidir. Eğer belge
274 parola korumalı değilse günlüğün bu kısmı da yukarıdaki gibi
275 "<code>-</code>" olacaktır.</dd>
277 <dt><code>[10/Oct/2000:13:55:36 -0700]</code>
278 (<code>%t</code>)</dt>
280 <dd>İsteğin alındığı tarih ve saat. Biçemi şöyledir:
283 <code>[gün/ay/yıl:saat:dakika:saniye dilim]<br />
284 gün = 2 hane<br />
285 ay = 3 harf<br />
286 yıl = 4 hane<br />
287 saat = 2 hane<br />
288 dakika = 2 hane<br />
289 saniye = 2 hane<br />
290 dilim = (`+' | `-') 4 hane</code>
292 <p>Günlük biçem dizgesinde zaman gösterim biçemini
293 <code>%{<em>biçem</em>}t</code> şeklinde belirtmek de mümkündür.
294 Buradaki <code><em>biçem</em></code> dizgesi, stardart C
295 kütüphanesindeki <code>strftime(3)</code> işlevi için tanımlanmış
296 biçem belirteçleriyle veya desteklenen özel belirteçlerle
297 oluşturulabilir. Ayrıntılı bilgi için <code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code>
298 <a href="mod/mod_log_config.html#formats">biçem dizgelerine</a>
302 <dt><code>"GET /apache_pb.gif HTTP/1.0"</code>
303 (<code>\"%r\"</code>)</dt>
305 <dd>İstemciden alınan istek satırının çift tırnaklar arasında
306 gösterilmesi istenmiştir. İstek satırı en yararlı bilgi parçalarını
307 içerir. Birincisi, istemci tarafından kullanılan yöntem
308 <code>GET</code>’miş. İkinci olarak istemci
309 <code>/apache_pb.gif</code> dosyasını istemiş ve üçüncü olarak
310 istemci <code>HTTP/1.0</code> protokolünü kullanmış. İstek satırının
311 bazı parçalarını bağımsız olarak da günlüklemek mümkündür. Örneğin,
312 "<code>%m %U%q %H</code>" dizgesi, yöntem, yol, sorgu dizgesi ve
313 protokolü kaydedecektir; bu dizge "<code>%r</code>" biçem
314 belirtecinin tek başına yaptığı işi yapar.</dd>
316 <dt><code>200</code> (<code>%>s</code>)</dt>
318 <dd>Bu, sunucunun istemciye gönderdiği durum kodudur. İsteğin
319 başarıyla yerine getirilip getirilmediğini gösterdiği için bu bilgi
320 çok değerlidir. Durum kodu 2 ile başlıyorsa istek başarıyla yerine
321 getirilmiştir, 3 ile başlıyorsa yönlendirilmiştir, 4 ile başlıyorsa
322 istemci tarafında bir hata oluşmuştur, 5 ile başlıyorsa sunucuda bir
323 hata oluşmuştur. Olası hata kodlarının tam listesi <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">RFC2616 Hiper
324 Metin Aktarım Protokolü</a>nün 10. bölümünde bulunabilir.</dd>
326 <dt><code>2326</code> (<code>%b</code>)</dt>
328 <dd>Son parça istemciye döndürülen nesnenin yanıt başlığı hariç
329 uzunluğudur. Eğer istemciye bir içerik döndürülmemişse bu değer
330 "<code>-</code>" olacaktır. Bunun yerine günlüğe "<code>0</code>"
331 yazdırmak için <code>%B</code> belirtecini kullanınız.</dd>
335 <h3><a name="combined" id="combined">Birleşik Günlük Biçemi</a></h3>
338 <p>Sıklıkla kullanılan diğer bir biçem dizgesi Birleşik Günlük Biçemi
339 (Combined Log Format) olup şöyle kullanılabilir:</p>
341 <div class="example"><p><code>
342 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
343 \"%{User-agent}i\"" combined<br />
344 CustomLog log/access_log combined
347 <p>Bu biçem ilaveten 2 alan içermesi dışında Ortak Günlük Biçemi ile
348 aynıdır. İlave alanların ikisi de <code>%{<em>başlık</em>}i</code>
349 biçeminde olup buradaki <code><em>başlık</em></code>, HTTP isteğindeki
350 başlık alanlarından biridir. Bu biçemin kullanıldığı bir erişim
351 günlüğü girdisi şöyle olurdu:</p>
353 <div class="example"><p><code>
354 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
355 /apache_pb.gif HTTP/1.0" 200 2326
356 "http://www.example.com/start.html" "Mozilla/4.08 [en]
363 <dt><code>"http://www.example.com/start.html"</code>
364 (<code>\"%{Referer}i\"</code>)</dt>
366 <dd>HTTP istek başlığı "Referer". İstemcinin raporladığı isteğin
367 kaynaklandığı URI. (Bu isteğin yapılmasını sağlayan bağlantıyı
368 içeren URL veya istek bir sayfanın bileşenleri ile ilgiliyse istenen
369 sayfanın URL’si olabilir.)</dd>
371 <dt><code>"Mozilla/4.08 [en] (Win98; I ;Nav)"</code>
372 (<code>\"%{User-agent}i\"</code>)</dt>
374 <dd>Tarayıcı kimliğini içeren HTTP istek başlığı. Bu istemcinin
375 tarayıcısının raporladığı kendi tanıtım bilgisidir.</dd>
379 <h3><a name="multiple" id="multiple">Çok Sayıda Erişim Günlüğü</a></h3>
382 <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
383 sayıda erişim günlüğü kolayca oluşturulabilir. Örneğin aşağıdaki
384 yönergelerle 3 tane erişim günlüğü oluşturulacaktır. İlki temel OGB
385 bilgisini içerirken diğer ikisi isteğin kaynaklandığı yeri ve tarayıcı
386 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
387 <code>AgentLog</code> yönergelerinin etkilerinin nasıl taklit
388 edileceğini de göstermektedir.</p>
390 <div class="example"><p><code>
391 LogFormat "%h %l %u %t \"%r\" %>s %b" common<br />
392 CustomLog logs/access_log common<br />
393 CustomLog logs/referer_log "%{Referer}i -> %U"<br />
394 CustomLog logs/agent_log "%{User-agent}i"
397 <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
398 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
402 <h3><a name="conditional" id="conditional">Şarta Bağlı Günlükler</a></h3>
405 <p>Bazı durumlarda istemcinin yaptığı isteğe bağlı olarak erişim
406 günlüğünde belli girdilerin dışlanması gerekebilir. Bu, <a href="env.html">ortam değişkenleri</a> sayesinde kolayca yerine
407 getirilebilir. Önce isteğin belli koşulları sağladığını belirten bir
408 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.
409 Sonra da, ortam değişkenine bağlı olarak isteklerin günlüğe dahil
410 edilip edilmeyeceği <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesinin
411 <code>env=</code> deyimi kullanılarak belirtilir. Bazı örnekler:</p>
413 <div class="example"><p><code>
414 # yerel konaktan kaynaklanan istekleri imleyelim<br />
415 SetEnvIf Remote_Addr "127\.0\.0\.1" kaydetme<br />
416 # robots.txt dosyası isteklerini imleyelim<br />
417 SetEnvIf Request_URI "^/robots\.txt$" kaydetme<br />
418 # Kalanları günlüğe kaydedelim<br />
419 CustomLog logs/access_log common env=!kaydetme
422 <p>Başka bir örnek olarak, Türkçe belge isteklerini bir dosyaya diğer
423 dillerdeki istekleri başka bir dosyaya kaydedelim.</p>
425 <div class="example"><p><code>
426 SetEnvIf Accept-Language "tr" turkce<br />
427 CustomLog logs/turkce_log common env=turkce<br />
428 CustomLog logs/diger_diller_log common env=!turkce
431 <p>Bir arabellkleme senaryosuna arabelleğin verimli kullanılıp
432 kullanılmadığını bilmek isteyelim. Bu basitçe şöyle yapılabilir:</p>
434 <div class="example"><p><code>
435 SetEnv CACHE_MISS 1<br />
436 LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cache<br />
437 CustomLog logs/access_log common-cache
440 <p><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> önce <code class="module"><a href="./mod/mod_env.html">mod_env</a></code> modülünü
441 çalıştıracak ve başarılı olunduğu takdirde içeriği onsuz teslim
442 edecektir. Bu durumda arabellek kaybı <code>1</code> olarak
443 günlüklenirken arabellek sunumu <code>-</code> olarak
444 günlüklenecektir.</p>
446 <p><code>env=</code> sözdizimine ek olarak, <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> HTTP yanıt kodudaki koşul
447 değerlerini günlüklemeyi de destekler:</p>
449 <div class="example"><p><code>
450 LogFormat "%400,501{User-agent}i" browserlog<br />
451 LogFormat "%!200,304,302{Referer}i" refererlog
454 <p>Bu örnekte, HTTP durum kodu 400 veya 501 ise <code>User-agent</code>
455 başlığı günlüklenecektir. Aksi takdirde, günlüğe bir "-" yazılacaktır.
456 Benzer şekilde ikinci örnekte, HTTP durum kodu 200, 204 veya 302
457 <strong>değilse</strong> (durum kodlarının öncesindeki "!" imine
458 dikkat) <code>Referer</code> başlığı günlüklenecektir.</p>
460 <p>Koşulaa bağlı günlük kaydının çok esnek ve güçlü olabileceğini
461 göstermiş olsak da günlük içeriğini denetlemenin tek yolu bu değildir.
462 Günlük dosyaları sunucu etkinliğini eksiksiz olarak kaydedebildikleri
463 takdirde daha yararlı olurlar. Günlük dosyalarını sonradan işleme tabi
464 tutarak istenmeyen girdileri kaldırılmış bir kopya almak hem kolay hem
465 de daha yararlıdır.</p>
467 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
468 <div class="section">
469 <h2><a name="rotation" id="rotation">Günlük Çevrimi</a></h2>
472 <p>Yükü ağır sunucularda günlük dosyalarına kaydedilen bilginin miktarı
473 çok büyük boyutlara ulaşabilir. 10.000 istek içeren bir erişim günlüğü
474 yaklaşık 1MB yer kaplar. Etkin günlük dosyasını belirli aralıklarla
475 değiştirmek veya silmek gerekebilir. Apache httpd çalışırken dosyayı sürekli
476 açık tuttuğu ve yazdığı için bu işlem sunucu çalışırken yapılamaz. Bu
477 bakımdan, günlük dosyası değiştirildikten veya silindikten sonra yeni
478 dosyanın açılması için <a href="stopping.html">sunucunun yeniden
479 başlatılması</a> gerekir.</p>
481 <p><a href="stopping.html#graceful">Nazikçe yeniden başlatmak</a>
482 suretiyle sunucunun, mevcut ve bekleyen bağlantıları kaybetmeden yeni
483 günlük dosyalarını açması sağlanabilir. Bununla birlikte, bu işlem
484 sırasında sunucunun eski isteklere sunumu bitirene kadar eski günlük
485 dosyalarına yazmaya devam edebilmesi gerekir. Bu bakımdan, yeniden
486 başlatmanın ardından eski günlük dosyaları üzerinde bir işlem yapmadan
487 önce biraz beklemek gerekir. Günlük dosyalarını döndürürken kullanılan
488 senaryolarda genellikle eski günlük dosyaları yer kazanmak için
491 <div class="example"><p><code>
492 mv access_log access_log.old<br />
493 mv error_log error_log.old<br />
494 apachectl graceful<br />
496 gzip access_log.old error_log.old
499 <p>Günlük çevrimi yapmanın başka bir yolu da sonraki bölümde açıklandığı
500 gibi <a href="#piped">borulu günlükler</a> kullanmaktır.</p>
501 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
502 <div class="section">
503 <h2><a name="piped" id="piped">Borulu Günlükler</a></h2>
506 <p>Apache httpd hata ve erişim günlüklerini doğrudan bir dosyaya yazmak
507 yerine bir boru üzerinden başka bir sürece yazabilir. Bu yetenek ana
508 sunucuya herhangi bir kod eklemeksizin günlükleme esnekliğini şaşırtıcı
509 derecede arttırır. Günlükler boruya yazılmak istenirse dosya ismini boru
510 karakteriyle ("<code>|</code>") değiştirip ardına günlük girdilerini
511 standart girdisinden kabul edecek programın ismini eklemek yeterlidir.
512 Apache httpd başlatıldığı zaman borulu günlük işlemini de
513 başlatacaktır. Eğer sunucu çalışırken günlükleri kabul eden süreç
514 çökerse Apache httpd bu programı yeniden başlatır. (Bu son özelliği
515 sebebiyle bu tekniğe “güvenilir borulu günlükleme” adını veriyoruz.)</p>
517 <p>Borulu günlük süreçleri ana Apache httpd süreci tarafından başlatılır
518 ve bu süreçler ana Apache httpd sürecinin kullanıcı kimliğini miras
519 alırlar. Yani borulu günlükleme programları aslında root tarafından
520 çalıştırılmış gibi olur. Bu bakımdan, bu programları basit ve güvenilir
521 kılmak çok önemlidir.</p>
523 <p>Borulu günlüklerin önemli kullanım alanlarından biri de sunucuyu
524 yeniden başlatmak gerekmeksizin günlük çevrimini mümkün kılmaktır.
525 Apache HTTP sunucusu bu amaçla kullanılmak üzere
526 <code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code> diye bir program içerir. Örneğin,
527 günlükleri 24 saatte bir döndürmek isterseniz bunu şöyle
530 <div class="example"><p><code>
531 CustomLog "|/usr/local/apache/bin/rotatelogs
532 /var/log/access_log 86400" common
535 <p>Borunun diğer ucundaki süreci başlatacak komutun tırnak içine
536 alındığına dikkat ediniz. Bu örnekler erişim günlüğü için verilmişse de
537 aynı teknik hata günlüğü için de kullanılabilir.</p>
539 <p>Hariçten bir uygulama olarak <a href="http://www.cronolog.org/">cronolog</a> isminde buna benzer ancak
540 çok daha esnek bir program daha vardır.</p>
542 <p>Borulu günlükler de şarta bağlı günlükleme kadar güçlü olmakla beraber
543 çevrimdışı ardıl işlemler gibi daha basit çözümler için
544 kullanılmamalıdır.</p>
546 <p>Öntanımlı olarak borulu günlük süreci bir kabuk kullanmadan
547 çalıştırılır. Kabuk kullanarak (genelde <code>/bin/sh -c</code> ile)
548 yapılmak istenirse "<code>|</code>" yerine "<code>|$</code>"
551 <div class="example"><p><code>
552 # Kabu kullanarak "rotatelogs" çalıştırmak<br />
553 CustomLog "|$/usr/local/apache/bin/rotatelogs
554 /var/log/access_log 86400" common
557 <p>Bu, Apache 2.2 için öntanımlı davranıştı. Kabuk özelliklerine bağlı
558 olarak, yeniden başlatma sırasındaki sinyal işleme sorunları ve günlük
559 borulama uygulamasının yaşam süresi için ek bir kabuk süreci ile
560 sonuçlanabilir. Apache 2.2 ile uyumluluk açısından "<code>||</code>"
561 gösterimi de desteklenmekte olup "<code>|</code>" kullanımına
564 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
565 <div class="section">
566 <h2><a name="virtualhost" id="virtualhost">Sanal Konaklar</a></h2>
569 <p>Bir sunucu çok sayıda <a href="vhosts/">sanal konak</a> ile hizmet
570 sunarken bunların günlük kayıtları için çeşitli seçenekler mevcuttur.
571 İlk seçenekte, sanki sunucu tek bir konakla hizmet sunuyormuş gibi
572 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
573 bağlamına yerleştirerek tüm isteklerin aynı erişim ve hata günlüğüne
574 yazılmasını sağlamak olasıdır. Bu teknik, tek tek sanal konaklar için
575 kolayca istatistik toplamaya izin vermez.</p>
577 <p>Eğer <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>
578 veya <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> yönergesi bir
579 <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> bölümüne
580 yerleştirilirse bu sanal konağa bütün erişimler veya hatalar belirtilen
581 dosyaya günlüklenecektir. Böyle günlükleme yönergeleri içermeyen sanal
582 konakların günlükleri hala ana sunucunun hata ve erişim günlüklerine
583 yazılmaya devam edecektir. Bu teknik az sayıda sanal konak barındıran
584 sunucular için çok kullanışlıdır. Fakat sanal konak sayısı çok fazlaysa
585 bu teknikle günlük dosyalarını yönetmek çok karmaşık bir hal alabilir.
586 Ayrıca, <a href="vhosts/fd-limits.html">yetersiz dosya tanıtıcısı</a>
587 sorunlarıyla çok sık karşılaşılabilir.</p>
589 <p>Erişim günlükleri için çok az bir fedakarlıkla çok iyi bir çözüm vardır.
590 Günlük biçemine sanal konaklarla ilgili bilgi eklemek suretiyle tüm
591 konakların aynı günlük dosyasını kullanmaları olasıdır. Böylece günlük
592 dosyası sonradan her sanal konak için ayrı bir dosya oluşturmak üzere
593 ayrıştırılabilir. Örneğin, bu işlem için şu yönergeler kullanılıyor
596 <div class="example"><p><code>
597 LogFormat "%v %l %u %t \"%r\" %>s %b"
599 CustomLog logs/access_log ortaksankon
602 <p><code>%v</code> belirteci isteği sunan sanal konağın ismini günlüğe
603 yazmak için kullanılır. Daha sonra <a href="programs/other.html">split-logfile</a> gibi bir program
604 kullanarak, bu dosyadan her sanal konak için ayrı birer dosya elde
606 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
607 <div class="section">
608 <h2><a name="other" id="other">Diğer Günlük Dosyaları</a></h2>
611 <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_config.html">mod_log_config</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></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_config.html#bufferedlogs">BufferedLogs</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_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>
613 <h3>Gönderilen ve alınan bayt sayısının günlüklenmesi</h3>
616 <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
617 biçem belirteçlerine alınan ve gönderilen bayt sayıları için iki
618 belirteç (%I ve %O) ekler.</p>
624 <p><code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code> modülü istemci isteklerinin kanıt
625 olarak kullanılmak amacıyla günlüklenmesini sağlar. Günlükleme her
626 istek için isteğe hizmet sunmadan önce ve sonra olmak üzere iki defa
627 yapılır. Böylece günlük dosyasında başarılı her istek için iki satır
628 bulunur. Adli günlükleme çok sıkı kurallara tabi olup
629 kişiselleştirilemez. Güvenlik ve hata ayıklama aracı olarak yararlı
633 <h3><a name="pidfile" id="pidfile">PID Dosyası</a></h3>
636 <p>Apache httpd başlatıldığında, ana httpd sürecinin kimliği (PID)
637 <code>logs/httpd.pid</code> dosyasına kaydedilir. Bu dosyanın ismi
638 <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> yönergesi ile
639 değiştirilebilir. Bu süreç kimliği sistem yöneticisi tarafından ana
640 sürece sinyal göndererek artalan sürecini sonlandırmak veya yeniden
641 başlatmak için kullanılır. Windows üzerinde bu işlem için
642 <code>-k</code> komut satırı seçeneği kullanılır. Bu konuda daha
643 ayrıntılı bilgi edinmek için <a href="stopping.html">Durdurma ve
644 Yeniden Başlatma</a> belgesine bakınız.</p>
647 <h3><a name="scriptlog" id="scriptlog">Betik Günlüğü</a></h3>
650 <p><code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code> yönergesi CGI
651 betiklerinin girdi ve çıktılarını kaydetmenizi mümkün kılmak suretiyle
652 hata ayıklamaya yardımcı olur. Bu sadece deneysel amaçla kullanılmalı,
653 asıl sunucuya uygulanmamalıdır. <a href="mod/mod_cgi.html">mod_cgi</a>
654 belgesinde daha fazla bilgi bulunabilir.</p>
657 <div class="bottomlang">
658 <p><span>Mevcut Diller: </span><a href="./en/logs.html" hreflang="en" rel="alternate" title="English"> en </a> |
659 <a href="./fr/logs.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
660 <a href="./ja/logs.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
661 <a href="./ko/logs.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
662 <a href="./tr/logs.html" title="Türkçe"> tr </a></p>
663 </div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Yorum</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
664 <script type="text/javascript"><!--//--><![CDATA[//><!--
665 var comments_shortname = 'httpd';
666 var comments_identifier = 'http://httpd.apache.org/docs/trunk/logs.html';
668 if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
669 d.write('<div id="comments_thread"><\/div>');
670 var s = d.createElement('script');
671 s.type = 'text/javascript';
673 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
674 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
677 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
679 })(window, document);
680 //--><!]]></script></div><div id="footer">
681 <p class="apache">Copyright 2015 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>
682 <p class="menu"><a href="./mod/">Modüller</a> | <a href="./mod/quickreference.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="./glossary.html">Terimler</a> | <a href="./sitemap.html">Site Haritası</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
683 if (typeof(prettyPrint) !== 'undefined') {