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 7 --> 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" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" /> 12<script src="/style/scripts/prettify.js" type="text/javascript"> 13</script> 14 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/directives.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.2</p> 19<img alt="" src="/images/feather.gif" /></div> 20<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div> 21<div id="path"> 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.2</a></div><div id="page-content"><div id="preamble"><h1>Günlük Dosyaları</h1> 23<div class="toplang"> 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> 29</div> 30 31 <p>Bir HTTP sunucusunu verimli şekilde yönetebilmek için oluşabilecek 32 sorunlardan başka sunucunun başarımı ve etkinliği hakkında da bazı geri 33 bildirimler almak gerekir. Apache HTTP Sunucusu çok kapsamlı ve esnek 34 bir günlükleme yeteneğine sahiptir. Bu belgede sunucunun günlükleme 35 yeteneğini nasıl yapılandıracağınızdan ve günlük kayıtlarını nasıl 36 yorumlayacağınızdan bahsedilecektir.</p> 37 </div> 38<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#security">Güvenlik Uyarısı</a></li> 39<li><img alt="" src="/images/down.gif" /> <a href="#errorlog">Hata Günlüğü</a></li> 40<li><img alt="" src="/images/down.gif" /> <a href="#accesslog">Erişim Günlüğü</a></li> 41<li><img alt="" src="/images/down.gif" /> <a href="#rotation">Günlük Çevrimi</a></li> 42<li><img alt="" src="/images/down.gif" /> <a href="#piped">Borulu Günlükler</a></li> 43<li><img alt="" src="/images/down.gif" /> <a href="#virtualhost">Sanal Konaklar</a></li> 44<li><img alt="" src="/images/down.gif" /> <a href="#other">Diğer Günlük Dosyaları</a></li> 45</ul><ul class="seealso"><li><a href="#comments_section">Yorum</a></li></ul></div> 46<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 47<div class="section"> 48<h2><a name="security" id="security">Güvenlik Uyarısı</a></h2> 49 50 51 <p>Apache’nin günlük dosyalarını yazdığı dizine yazabilen birinin sunucuyu 52 başlatan kullanıcı kimliğine (bu genellikle root olur) erişim 53 kazanabileceğine hemen hemen kesin gözüyle bakılabilir. Sonuçlarının 54 neler olacağını kestiremiyorsanız günlüklerin yazıldığı dizinde <em>hiç 55 kimseye</em> yazma erişimi vermeyin; ayrıntılı bilgi için <a href="misc/security_tips.html">güvenlik ipuçları</a> belgesine 56 bakınız.</p> 57 58 <p>Buna ilaveten, günlük dosyaları istemci tarafından sağlanmış bilgiler 59 de içerebilir. Bu nedenle, kötü niyetli istemcilerin günlük dosyalarına 60 denetim karakterleri girmeleri olasılığına karşı ham günlükler ele 61 alınırken dikkatli olunmalıdır.</p> 62 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 63<div class="section"> 64<h2><a name="errorlog" id="errorlog">Hata Günlüğü</a></h2> 65 66 <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> 67 68 <p>İsmi ve yeri <code class="directive"><a href="/mod/core.html#errorlog">ErrorLog</a></code> yönergesi 69 ile belirtilen sunucu hata günlüğü, en önemli günlük dosyasıdır. Apache 70 httpd tarafından istekler işlenirken saptanan hatalar ve tanı bilgileri 71 bu dosyaya gönderilir. Sunucuyu başlatırken veya sunucu çalışırken bir 72 sorunla karşılaşıldığında, neyin yanlış gittiğini öğrenmek için 73 bakılacak ilk yer burasıdır. Günlük kaydı çoğunlukla sorunun nasıl 74 düzeltileceği ile ilgili ayrıntıları da içerir.</p> 75 76 <p>Hata günlüğü normal olarak bir dosyaya yazılır (genellikle, dosyanın 77 ismi Unix sistemlerinde <code>error_log</code>, Windows ve OS/2’de ise 78 <code>error.log</code>’dur). Ayrıca, Unix sistemlerinde sunucunun 79 hataları <code>syslog</code>’a veya <a href="#piped">borulamak suretiyle 80 bir programa</a> aktarması da mümkündür.</p> 81 82 <p>Hata günlüğünün biçemi anlaşılır olup içeriği kısmen serbestçe 83 belirlenir. Çoğu hata günlüğü girdisinde bulunan belli başlı bilgiler 84 vardır. Örnek tipik bir hata iletisi içermektedir:</p> 85 86 <div class="example"><p><code> 87 [Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] 88 client denied by server configuration: 89 /export/home/live/ap/htdocs/test 90 </code></p></div> 91 92 <p>Günlük girdisinin ilk öğesi iletinin yazıldığı tarih ve saatten oluşur. 93 İkinci öğe raporlanan bilginin önem derecesini belirtir. Hata günlüğüne 94 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 95 hatanın üretilmesine sebep olan istemcinin IP adresini içerir. Kalanı 96 iletinin kendisidir (duruma bakılırsa sunucu istemci erişimini reddetmek 97 üzere yapılandırılmış). Sunucu istenen belgenin (belge yolunu değil) 98 dosya sistemindeki yolunu raporlamıştır.</p> 99 100 <p>Hata günlüğünde görünebilecek ileti çeşitliliği oldukça fazladır. Çoğu 101 yukarıdaki örneğin benzeridir. Hata günlüğü ayrıca, CGI betiklerinin 102 hata ayıklama çıktılarını da içerir. Bir CGI betiği tarafından standart 103 hataya (<code>stderr</code>) yazılan her türlü bilgi doğrudan hata 104 günlüğüne kopyalanır.</p> 105 106 <p>Hata günlüğünü bilgi ekleyerek veya kaldırarak kişiselleştirmek 107 mümkündür. Bununla birlikte, hata günlüğü girdilerinin ilgili olduğu 108 isteklerin <a href="#accesslog">erişim günlüğünde</a> de girdileri 109 vardır. Örneğin, yukarıdaki girdi, erişim günlüğünde 403 durum kodlu bir 110 girdiyle ilgilidir. Erişim günlüğünü de kişiselleştirmek mümkün 111 olduğundan hata durumlarında bu günlük dosyasını da kullanarak daha 112 fazla bilgi sağlayabilirsiniz.</p> 113 114 <p>Sunucuyu denerken olası sorunlara karşı hata günlüğünü sürekli 115 izlemelisiniz. Unix sistemlerinde bunu şöyle bir komutla 116 sağlayabilirsiniz:</p> 117 118 <div class="example"><p><code> 119 tail -f error_log 120 </code></p></div> 121 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 122<div class="section"> 123<h2><a name="accesslog" id="accesslog">Erişim Günlüğü</a></h2> 124 125 126 <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> 127 128 <p>Sunucu erişim günlüğü sunucu tarafından işleme alınan tüm istekleri 129 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. 130 <code class="directive"><a href="/mod/mod_log_config.html#logformat">LogFormat</a></code> yönergesi ile 131 günlük içeriğini kişiselleştirmek mümkündür. Bu bölümde sunucunun 132 bilgileri erişim günlüğüne kaydetmesi için nasıl yapılandırılacağından 133 bahsedilecektir.</p> 134 135 <p>Şüphesiz, bilginin erişim günlüğünde saklanması günlük yönetiminde ilk 136 adımı oluşturur. Sonraki adım yararlı istatistikleri üretmek için bu 137 bilgiyi incelemektir. Günlük incelemesi bu belgenin kapsamına dahil 138 değildir ve aslında bu işlem sunucunun yaptığı işlerden biri değildir. 139 Bu konu ve günlük incelemesi yapan uygulamalar hakkında daha ayrıntılı 140 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> 141 142 <p>Apache httpd’nin çeşitli sürümlerinde erişim günlüklerini denetlemek 143 için kullanılan diğer modüller ve yönergeler arasında mod_log_referer, 144 mod_log_agent modülleri ve <code>TransferLog</code> yönergesi 145 sayılabilir. Artık, daha eski tüm diğer yönergelerin işlevselliklerini 146 bir araya toplayan <code class="directive"><a href="/mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi kullanılmaktadır.</p> 147 148 <p>Erişim günlüğünün girdi biçemi kolayca isteğe göre 149 düzenlenebilmektedir. Biçemi belirtmekte kullanılan biçem dizgesi, C 150 tarzı printf(1) biçem dizgesini andırır. Sonraki bölümlerde bazı 151 örneklere yer verilmiştir. Biçem dizgesini oluşturan belirteçlerin tam 152 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 153 Kişiselleştirilmesi</a> bölümüne bakınız.</p> 154 155 <h3><a name="common" id="common">Ortak Günlük Biçemi (OGB)</a></h3> 156 157 158 <p>Erişim günlüğü için sıklıkla kullanılan bir yapılandırma:</p> 159 160 <div class="example"><p><code> 161 LogFormat "%h %l %u %t \"%r\" %>s %b" common<br /> 162 CustomLog logs/access_log common 163 </code></p></div> 164 165 <p>İlk satırda belli bir biçem dizgesi için <code>common</code> diye bir 166 <em>takma ad</em> tanımlanmaktadır. Biçem dizgesi, sunucuya hangi 167 belli bir bilgi parçalarını günlükleyeceğini söyleyen % imli biçem 168 belirteçlerinden oluşur. Biçem dizgesine ayrıca dizgesel sabitler de 169 yerleştirilebilir ve bunlar erişim günlüğüne oldukları gibi 170 kopyalanırlar. Biçem dizgesi içinde çift tırnak karakteri (") biçem 171 dizgesini vaktinden önce sonlandırmaması için ters bölü çizgisi ile 172 öncelenmelidir. Biçem dizgesi ayrıca, satır sonlarını belirtmek için 173 "<code>\n</code>" ve sekmeleri belirtmek için "<code>\t</code>" 174 denetim karakterlerini de içerebilir.</p> 175 176 <p><code class="directive"><a href="/mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi 177 evvelce tanımlanmış bir <em>takma adı</em> kullanarak yeni bir günlük 178 dosyası tanımlar. Erişim günlüğünün dosya ismi bölü çizgisi ile 179 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> 180 181 <p>Yukarıdaki yapılandırma günlük dosyasına girdileri Ortak Günlük 182 Biçemi (Common Log Format) adı verilen standart biçemde yazar. 183 Bu standart biçem başka HTTP sunucuları tarafından da kullanılır ve 184 çoğu günlük inceleme yazılımı tarafından tanınır. Ortak Günlük 185 Biçeminde üretilen günlük girdileri şöyle görünür:</p> 186 187 <div class="example"><p><code> 188 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET 189 /apache_pb.gif HTTP/1.0" 200 2326 190 </code></p></div> 191 192 <p>Bu günlük girdisini parça parça açıklayalım:</p> 193 194 <dl> 195 <dt><code>127.0.0.1</code> (<code>%h</code>)</dt> 196 197 <dd>Bu, sunucuya istek yapan istemcinin (uzak konağın) IP adresidir. 198 Eğer <code class="directive"><a href="/mod/core.html#hostnamelookups">HostnameLookups</a></code> 199 yönergesine <code>On</code> değeri atanmışsa sunucu bu IP adresi 200 için DNS sorgusu yapacak ve IP adresi yerine bulduğu konak ismini 201 yazmaya çalışacaktır. Bununla birlikte, bu işlem sunucuyu epeyce 202 yavaşlattığından önerilmemektedir. Konak isimlerini saptamak için en 203 iyisi günlük girdilerini <code class="program"><a href="/programs/logresolve.html">logresolve</a></code> gibi bir 204 günlük işlemcisinden geçirmektir. Burada raporlanan IP adresi 205 doğrudan istemcinin IP adresi olmayabilir. Eğer sunucu ile istemci 206 arasında bir vekil sunucu varsa bu IP adresi, vekil sunucunun IP 207 adresi olacaktır.</dd> 208 209 <dt><code>-</code> (<code>%l</code>)</dt> 210 211 <dd>Çıktıdaki bir "tire" imi istenen bilgi parçasının mevcut olmadığı 212 anlamına gelir. Bu durumda, mevcut olmayan bilgi istemci makine 213 üzerinde <code>identd</code> tarafından belirlenen istemcinin RFC 214 1413 kimliğidir. Bu bilgi oldukça güvenilmezdir ve sıkıca denetlenen 215 iç ağlar haricinde hemen hemen asla kullanılmamalıdır. Apache, 216 <code class="directive"><a href="/mod/mod_ident.html#identitycheck">IdentityCheck</a></code> yönergesine 217 <code>On</code> değeri atanmış olmadıkça bu bilgiyi saptamaya 218 uğraşmaz.</dd> 219 220 <dt><code>frank</code> (<code>%u</code>)</dt> 221 222 <dd>Bu, belge isteğinde bulunan kişinin HTTP kimlik doğrulamasıyla 223 saptanan kullanıcı kimliğidir. Bu değer CGI betiklerine 224 <code>REMOTE_USER</code> ortam değişkeni ile sağlanır. Eğer istek 225 için durum kodu 401 ise (aşağıya bakınız) henüz kullanıcının kimliği 226 doğrulanmamış olacağından bu değere güvenilmemelidir. Eğer belge 227 parola korumalı değilse günlüğün bu kısmı da yukarıdaki gibi 228 "<code>-</code>" olacaktır.</dd> 229 230 <dt><code>[10/Oct/2000:13:55:36 -0700]</code> 231 (<code>%t</code>)</dt> 232 233 <dd>İsteğin alındığı tarih ve saat. Biçemi şöyledir: 234 235 <p class="indent"> 236 <code>[gün/ay/yıl:saat:dakika:saniye dilim]<br /> 237 gün = 2 hane<br /> 238 ay = 3 harf<br /> 239 yıl = 4 hane<br /> 240 saat = 2 hane<br /> 241 dakika = 2 hane<br /> 242 saniye = 2 hane<br /> 243 dilim = (`+' | `-') 4 hane</code> 244 </p> 245 Günlük biçem dizgesinde zaman gösterim biçemini 246 <code>%{<em>biçem</em>}t</code> şeklinde belirtmek de mümkündür. 247 Buradaki <code><em>biçem</em></code> dizgesi, stardart C 248 kütüphanesindeki <code>strftime(3)</code> işlevi için tanımlanmış 249 biçem belirteçleriyle oluşturulabilir. 250 </dd> 251 252 <dt><code>"GET /apache_pb.gif HTTP/1.0"</code> 253 (<code>\"%r\"</code>)</dt> 254 255 <dd>İstemciden alınan istek satırının çift tırnaklar arasında 256 gösterilmesi istenmiştir. İstek satırı en yararlı bilgi parçalarını 257 içerir. Birincisi, istemci tarafından kullanılan yöntem 258 <code>GET</code>’miş. İkinci olarak istemci 259 <code>/apache_pb.gif</code> dosyasını istemiş ve üçüncü olarak 260 istemci <code>HTTP/1.0</code> protokolünü kullanmış. İstek satırının 261 bazı parçalarını bağımsız olarak da günlüklemek mümkündür. Örneğin, 262 "<code>%m %U%q %H</code>" dizgesi, yöntem, yol, sorgu dizgesi ve 263 protokolü kaydedecektir; bu dizge "<code>%r</code>" biçem 264 belirtecinin tek başına yaptığı işi yapar.</dd> 265 266 <dt><code>200</code> (<code>%>s</code>)</dt> 267 268 <dd>Bu, sunucunun istemciye gönderdiği durum kodudur. İsteğin 269 başarıyla yerine getirilip getirilmediğini gösterdiği için bu bilgi 270 çok değerlidir. Durum kodu 2 ile başlıyorsa istek başarıyla yerine 271 getirilmiştir, 3 ile başlıyorsa yönlendirilmiştir, 4 ile başlıyorsa 272 istemci tarafında bir hata oluşmuştur, 5 ile başlıyorsa sunucuda bir 273 hata oluşmuştur. Olası hata kodlarının tam listesi <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">RFC2616 Hiper 274 Metin Aktarım Protokolü</a>nün 10. bölümünde bulunabilir.</dd> 275 276 <dt><code>2326</code> (<code>%b</code>)</dt> 277 278 <dd>Son parça istemciye döndürülen nesnenin yanıt başlığı hariç 279 uzunluğudur. Eğer istemciye bir içerik döndürülmemişse bu değer 280 "<code>-</code>" olacaktır. Bunun yerine günlüğe "<code>0</code>" 281 yazdırmak için <code>%B</code> belirtecini kullanınız.</dd> 282 </dl> 283 284 285 <h3><a name="combined" id="combined">Birleşik Günlük Biçemi</a></h3> 286 287 288 <p>Sıklıkla kullanılan diğer bir biçem dizgesi Birleşik Günlük Biçemi 289 (Combined Log Format) olup şöyle kullanılabilir:</p> 290 291 <div class="example"><p><code> 292 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" 293 \"%{User-agent}i\"" combined<br /> 294 CustomLog log/access_log combined 295 </code></p></div> 296 297 <p>Bu biçem ilaveten 2 alan içermesi dışında Ortak Günlük Biçemi ile 298 aynıdır. İlave alanların ikisi de <code>%{<em>başlık</em>}i</code> 299 biçeminde olup buradaki <code><em>başlık</em></code>, HTTP isteğindeki 300 başlık alanlarından biridir. Bu biçemin kullanıldığı bir erişim 301 günlüğü girdisi şöyle olurdu:</p> 302 303 <div class="example"><p><code> 304 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET 305 /apache_pb.gif HTTP/1.0" 200 2326 306 "http://www.example.com/start.html" "Mozilla/4.08 [en] 307 (Win98; I ;Nav)" 308 </code></p></div> 309 310 <p>Ek alanlar:</p> 311 312 <dl> 313 <dt><code>"http://www.example.com/start.html"</code> 314 (<code>\"%{Referer}i\"</code>)</dt> 315 316 <dd>HTTP istek başlığı "Referer". İstemcinin raporladığı isteğin 317 kaynaklandığı URI. (Bu isteğin yapılmasını sağlayan bağlantıyı 318 içeren URL veya istek bir sayfanın bileşenleri ile ilgiliyse istenen 319 sayfanın URL’si olabilir.)</dd> 320 321 <dt><code>"Mozilla/4.08 [en] (Win98; I ;Nav)"</code> 322 (<code>\"%{User-agent}i\"</code>)</dt> 323 324 <dd>Tarayıcı kimliğini içeren HTTP istek başlığı. Bu istemcinin 325 tarayıcısının raporladığı kendi tanıtım bilgisidir.</dd> 326 </dl> 327 328 329 <h3><a name="multiple" id="multiple">Çok Sayıda Erişim Günlüğü</a></h3> 330 331 332 <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 333 sayıda erişim günlüğü kolayca oluşturulabilir. Örneğin aşağıdaki 334 yönergelerle 3 tane erişim günlüğü oluşturulacaktır. İlki temel OGB 335 bilgisini içerirken diğer ikisi isteğin kaynaklandığı yeri ve tarayıcı 336 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 337 <code>AgentLog</code> yönergelerinin etkilerinin nasıl taklit 338 edileceğini de göstermektedir.</p> 339 340 <div class="example"><p><code> 341 LogFormat "%h %l %u %t \"%r\" %>s %b" common<br /> 342 CustomLog logs/access_log common<br /> 343 CustomLog logs/referer_log "%{Referer}i -> %U"<br /> 344 CustomLog logs/agent_log "%{User-agent}i" 345 </code></p></div> 346 347 <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 348 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 belirtilebilir.</p> 350 351 352 <h3><a name="conditional" id="conditional">Şarta Bağlı Günlükler</a></h3> 353 354 355 <p>Bazı durumlarda istemcinin yaptığı isteğe bağlı olarak erişim 356 günlüğünde belli girdilerin dışlanması gerekebilir. Bu, <a href="env.html">ortam değişkenleri</a> sayesinde kolayca yerine 357 getirilebilir. Önce isteğin belli koşulları sağladığını belirten bir 358 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. 359 Sonra da, ortam değişkenine bağlı olarak isteklerin günlüğe dahil 360 edilip edilmeyeceği <code class="directive"><a href="/mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesinin 361 <code>env=</code> deyimi kullanılarak belirtilir. Bazı örnekler:</p> 362 363 <div class="example"><p><code> 364 # yerel konaktan kaynaklanan istekleri imleyelim<br /> 365 SetEnvIf Remote_Addr "127\.0\.0\.1" kaydetme<br /> 366 # robots.txt dosyası isteklerini imleyelim<br /> 367 SetEnvIf Request_URI "^/robots\.txt$" kaydetme<br /> 368 # Kalanları günlüğe kaydedelim<br /> 369 CustomLog logs/access_log common env=!kaydetme 370 </code></p></div> 371 372 <p>Başka bir örnek olarak, Türkçe belge isteklerini bir dosyaya diğer 373 dillerdeki istekleri başka bir dosyaya kaydedelim.</p> 374 375 <div class="example"><p><code> 376 SetEnvIf Accept-Language "tr" turkce<br /> 377 CustomLog logs/turkce_log common env=turkce<br /> 378 CustomLog logs/diger_diller_log common env=!turkce 379 </code></p></div> 380 381 <p>Şarta bağlı günlük kaydının çok esnek ve güçlü olabileceğini 382 göstermiş olsak da günlük içeriğini denetlemenin tek yolu bu değildir. 383 Günlük dosyaları sunucu etkinliğini eksiksiz olarak kaydedebildikleri 384 takdirde daha yararlı olurlar. Günlük dosyalarını sonradan işleme tabi 385 tutarak istenmeyen girdileri kaldırılmış bir kopya almak hem kolay hem 386 de daha yararlıdır.</p> 387 388 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 389<div class="section"> 390<h2><a name="rotation" id="rotation">Günlük Çevrimi</a></h2> 391 392 393 <p>Yükü ağır sunucularda günlük dosyalarına kaydedilen bilginin miktarı 394 çok büyük boyutlara ulaşabilir. 10.000 istek içeren bir erişim günlüğü 395 yaklaşık 1MB yer kaplar. Etkin günlük dosyasını belirli aralıklarla 396 değiştirmek veya silmek gerekebilir. Apache çalışırken dosyayı sürekli 397 açık tuttuğu ve yazdığı için bu işlem sunucu çalışırken yapılamaz. Bu 398 bakımdan, günlük dosyası değiştirildikten veya silindikten sonra yeni 399 dosyanın açılması için <a href="stopping.html">sunucunun yeniden 400 başlatılması</a> gerekir.</p> 401 402 <p><a href="stopping.html#graceful">Nazikçe yeniden başlatmak</a> 403 suretiyle sunucunun, mevcut ve bekleyen bağlantıları kaybetmeden yeni 404 günlük dosyalarını açması sağlanabilir. Bununla birlikte, bu işlem 405 sırasında sunucunun eski isteklere sunumu bitirene kadar eski günlük 406 dosyalarına yazmaya devam edebilmesi gerekir. Bu bakımdan, yeniden 407 başlatmanın ardından eski günlük dosyaları üzerinde bir işlem yapmadan 408 önce biraz beklemek gerekir. Günlük dosyalarını döndürürken kullanılan 409 senaryolarda genellikle eski günlük dosyaları yer kazanmak için 410 sıkıştırılırlar:</p> 411 412 <div class="example"><p><code> 413 mv access_log access_log.old<br /> 414 mv error_log error_log.old<br /> 415 apachectl graceful<br /> 416 sleep 600<br /> 417 gzip access_log.old error_log.old 418 </code></p></div> 419 420 <p>Günlük çevrimi yapmanın başka bir yolu da sonraki bölümde açıklandığı 421 gibi <a href="#piped">borulu günlükler</a> kullanmaktır.</p> 422 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 423<div class="section"> 424<h2><a name="piped" id="piped">Borulu Günlükler</a></h2> 425 426 427 <p>Apache httpd hata ve erişim günlüklerini doğrudan bir dosyaya yazmak 428 yerine bir boru üzerinden başka bir sürece yazabilir. Bu yetenek ana 429 sunucuya herhangi bir kod eklemeksizin günlükleme esnekliğini şaşırtıcı 430 derecede arttırır. Günlükler boruya yazılmak istenirse dosya ismini boru 431 karakteriyle ("<code>|</code>") değiştirip ardına günlük girdilerini 432 standart girdisinden kabul edecek programın ismini eklemek yeterlidir. 433 Apache sunucusu başlatıldığı zaman borulu günlük işlemini de 434 başlatacaktır. Eğer sunucu çalışırken günlükleri kabul eden süreç 435 çökerse Apache bu programı yeniden başlatır. (Bu son özelliği sebebiyle 436 bu tekniğe “güvenilir borulu günlükleme” adını veriyoruz.)</p> 437 438 <p>Borulu günlük süreçleri ana Apache httpd süreci tarafından başlatılır 439 ve bu süreçler ana Apache httpd sürecinin kullanıcı kimliğini miras 440 alırlar. Yani borulu günlükleme programları aslında root tarafından 441 çalıştırılmış gibi olur. Bu bakımdan, bu programları basit ve güvenilir 442 kılmak çok önemlidir.</p> 443 444 <p>Borulu günlüklerin önemli kullanım alanlarından biri de sunucuyu 445 yeniden başlatmak gerekmeksizin günlük çevrimini mümkün kılmaktır. 446 Apache HTTP sunucusu bu amaçla kullanılmak üzere 447 <code class="program"><a href="/programs/rotatelogs.html">rotatelogs</a></code> diye bir program içerir. Örneğin, 448 günlükleri 24 saatte bir döndürmek isterseniz bunu şöyle 449 yapabilirsiniz:</p> 450 451 <div class="example"><p><code> 452 CustomLog "|/usr/local/apache/bin/rotatelogs 453 /var/log/access_log 86400" common 454 </code></p></div> 455 456 <p>Borunun diğer ucundaki süreci başlatacak komutun tırnak içine 457 alındığına dikkat ediniz. Bu örnekler erişim günlüğü için verilmişse de 458 aynı teknik hata günlüğü için de kullanılabilir.</p> 459 460 <p>Hariçten bir uygulama olarak <a href="http://www.cronolog.org/">cronolog</a> isminde buna benzer ancak 461 çok daha esnek bir program daha vardır.</p> 462 463 <p>Borulu günlükler de şarta bağlı günlükleme kadar güçlü olmakla beraber 464 çevrimdışı ardıl işlemler gibi daha basit çözümler için 465 kullanılmamalıdır.</p> 466 467 <p>Öntanımlı olarak borulu günlük süreci bir kabuk sayesinde yeniden 468 oluşur. (normalde <code>/bin/sh -c</code> ile). Kabuk üzerinden kabuk 469 çağrılarının özelliğinden dolayı borulu günlük programı çalışırken ve 470 yeniden başlatma sırasındaki sinyal yakalama sorunlarından dolayı ek 471 bir kabuk sürecinin başlatılmasi ihtimal dahilindedir.</p> 472 473 <p>Bir kabuk oluşturmaksızın borulu günlük sürecini yeniden oluşturmak 474 için "<code>|</code>" yerine "<code>||</code>" kullanın:</p> 475 476 <div class="example"><p><code> 477 # Kabuk kullanmadan "rotatelogs" kullanımı<br /> 478 CustomLog "||/usr/local/apache/bin/rotatelogs 479 /var/log/access_log 86400" common 480 </code></p></div> 481 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 482<div class="section"> 483<h2><a name="virtualhost" id="virtualhost">Sanal Konaklar</a></h2> 484 485 486 <p>Bir sunucu çok sayıda <a href="vhosts/">sanal konak</a> ile hizmet 487 sunarken bunların günlük kayıtları için çeşitli seçenekler mevcuttur. 488 İlk seçenekte, sanki sunucu tek bir konakla hizmet sunuyormuş gibi 489 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 490 bağlamına yerleştirerek tüm isteklerin aynı erişim ve hata günlüğüne 491 yazılmasını sağlamak olasıdır. Bu teknik, tek tek sanal konaklar için 492 kolayca istatistik toplamaya izin vermez.</p> 493 494 <p>Eğer <code class="directive"><a href="/mod/mod_log_config.html#customlog">CustomLog</a></code> 495 veya <code class="directive"><a href="/mod/core.html#errorlog">ErrorLog</a></code> yönergesi bir 496 <code class="directive"><a href="/mod/core.html#virtualhost"><VirtualHost></a></code> bölümüne 497 yerleştirilirse bu sanal konağa bütün erişimler veya hatalar belirtilen 498 dosyaya günlüklenecektir. Böyle günlükleme yönergeleri içermeyen sanal 499 konakların günlükleri hala ana sunucunun hata ve erişim günlüklerine 500 yazılmaya devam edecektir. Bu teknik az sayıda sanal konak barındıran 501 sunucular için çok kullanışlıdır. Fakat sanal konak sayısı çok fazlaysa 502 bu teknikle günlük dosyalarını yönetmek çok karmaşık bir hal alabilir. 503 Ayrıca, <a href="vhosts/fd-limits.html">yetersiz dosya tanıtıcısı</a> 504 sorunlarıyla çok sık karşılaşılabilir.</p> 505 506 <p>Erişim günlükleri için çok az bir fedakarlıkla çok iyi bir çözüm vardır. 507 Günlük biçemine sanal konaklarla ilgili bilgi eklemek suretiyle tüm 508 konakların aynı günlük dosyasını kullanmaları olasıdır. Böylece günlük 509 dosyası sonradan her sanal konak için ayrı bir dosya oluşturmak üzere 510 ayrıştırılabilir. Örneğin, bu işlem için şu yönergeler kullanılıyor 511 olsun:</p> 512 513 <div class="example"><p><code> 514 LogFormat "%v %l %u %t \"%r\" %>s %b" 515 ortaksankon<br /> 516 CustomLog logs/access_log ortaksankon 517 </code></p></div> 518 519 <p><code>%v</code> belirteci isteği sunan sanal konağın ismini günlüğe 520 yazmak için kullanılır. Daha sonra <a href="programs/other.html">split-logfile</a> gibi bir program 521 kullanarak, bu dosyadan her sanal konak için ayrı birer dosya elde 522 edilebilir.</p> 523 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 524<div class="section"> 525<h2><a name="other" id="other">Diğer Günlük Dosyaları</a></h2> 526 527 528 <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><li><code class="module"><a href="/mod/mod_log_config.html">mod_log_config</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_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> 529 530 <h3>Gönderilen ve alınan bayt sayısının günlüklenmesi</h3> 531 532 533 <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 534 biçem belirteçlerine alınan ve gönderilen bayt sayıları için iki 535 belirteç (%I ve %O) ekler.</p> 536 537 538 <h3>Adli Günlük</h3> 539 540 541 <p><code class="module"><a href="/mod/mod_log_forensic.html">mod_log_forensic</a></code> modülü istemci isteklerinin kanıt 542 olarak kullanılmak amacıyla günlüklenmesini sağlar. Günlükleme her 543 istek için isteğe hizmet sunmadan önce ve sonra olmak üzere iki defa 544 yapılır. Böylece günlük dosyasında başarılı her istek için iki satır 545 bulunur. Adli günlükleme çok sıkı kurallara tabi olup 546 kişiselleştirilemez. Güvenlik ve hata ayıklama aracı olarak yararlı 547 değildir.</p> 548 549 550 <h3><a name="pidfile" id="pidfile">PID Dosyası</a></h3> 551 552 553 <p>Apache httpd başlatıldığında, ana httpd sürecinin kimliği (PID) 554 <code>logs/httpd.pid</code> dosyasına kaydedilir. Bu dosyanın ismi 555 <code class="directive"><a href="/mod/mpm_common.html#pidfile">PidFile</a></code> yönergesi ile 556 değiştirilebilir. Bu süreç kimliği sistem yöneticisi tarafından ana 557 sürece sinyal göndererek artalan sürecini sonlandırmak veya yeniden 558 başlatmak için kullanılır. Windows üzerinde bu işlem için 559 <code>-k</code> komut satırı seçeneği kullanılır. Bu konuda daha 560 ayrıntılı bilgi edinmek için <a href="stopping.html">Durdurma ve 561 Yeniden Başlatma</a> belgesine bakınız.</p> 562 563 564 <h3><a name="scriptlog" id="scriptlog">Betik Günlüğü</a></h3> 565 566 567 <p><code class="directive"><a href="/mod/mod_cgi.html#scriptlog">ScriptLog</a></code> yönergesi CGI 568 betiklerinin girdi ve çıktılarını kaydetmenizi mümkün kılmak suretiyle 569 hata ayıklamaya yardımcı olur. Bu sadece deneysel amaçla kullanılmalı, 570 asıl sunucuya uygulanmamalıdır. <a href="mod/mod_cgi.html">mod_cgi</a> 571 belgesinde daha fazla bilgi bulunabilir.</p> 572 573 574 <h3><a name="rewritelog" id="rewritelog">Yeniden Yazım Günlüğü</a></h3> 575 576 577 <p>Güçlü ve karmaşık <a href="mod/mod_rewrite.html">mod_rewrite</a> 578 özellikleri kullanılırken, hata ayıklamaya yardımcı olmak için 579 <code class="directive"><a href="/mod/mod_rewrite.html#rewritelog">RewriteLog</a></code> yönergesini 580 kullanmak gerekebilir. Yönerge, günlük dosyasında yeniden yazım 581 motorunun istekleri nasıl dönüştürdüğüyle ilgili ayrıntılı bir döküm 582 üretir. Ayrıntı seviyesi <code class="directive"><a href="/mod/mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></code> yönergesi ile belirlenir.</p> 583 584 </div></div> 585<div class="bottomlang"> 586<p><span>Mevcut Diller: </span><a href="/en/logs.html" hreflang="en" rel="alternate" title="English"> en </a> | 587<a href="/fr/logs.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 588<a href="/ja/logs.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | 589<a href="/ko/logs.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 590<a href="/tr/logs.html" title="Türkçe"> tr </a></p> 591</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> 592<script type="text/javascript"><!--//--><![CDATA[//><!-- 593var comments_shortname = 'httpd'; 594var comments_identifier = 'http://httpd.apache.org/docs/2.2/logs.html'; 595(function(w, d) { 596 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 597 d.write('<div id="comments_thread"><\/div>'); 598 var s = d.createElement('script'); 599 s.type = 'text/javascript'; 600 s.async = true; 601 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 602 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 603 } 604 else { 605 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 606 } 607})(window, document); 608//--><!]]></script></div><div id="footer"> 609<p class="apache">Copyright 2013 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> 610<p class="menu"><a href="/mod/">Modüller</a> | <a href="/mod/directives.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[//><!-- 611if (typeof(prettyPrint) !== 'undefined') { 612 prettyPrint(); 613} 614//--><!]]></script> 615</body></html>