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.4</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.4</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<div class="outofdate">Bu çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.</div> 31 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> 38 </div> 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> 50<div class="section"> 51<h2><a name="overview" id="overview">Giriş</a></h2> 52 53 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> 55 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 63 gönderebilirler.</p> 64 65 <p>Bu belgede Apache HTTP Sunucusunun standart parçası olan günlükleme 66 modülleri hakkında bilgi verilecektir.</p> 67 68 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 69<div class="section"> 70<h2><a name="security" id="security">Güvenlik Uyarısı</a></h2> 71 72 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 78 bakınız.</p> 79 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> 85<div class="section"> 86<h2><a name="errorlog" id="errorlog">Hata Günlüğü</a></h2> 87 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> 89 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> 97 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> 103 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 107 içermektedir:</p> 108 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 112 </code></p></div> 113 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> 120 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> 126 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> 132 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> 136 137 <div class="example"><p><code> 138 tail -f error_log 139 </code></p></div> 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> 143 144 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> 153 154 <p>Bunu <code class="directive">LogLevel</code> yönergesinde modülün ismini 155 belirterek yapabilirsiniz:</p> 156 157 <pre class="prettyprint lang-config"> 158LogLevel info rewrite:trace5 159 </pre> 160 161 162 <p>Bu satırla ana <code class="directive">LogLevel</code> info'ya ayarlanırken 163 <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> için musluk <code>trace5</code> seviyesine 164 kadar açılmaktadır.</p> 165 166 <div class="note">Bu yönerge, Apache HTTP Sunucusunun evvelki sürümlerinde mevcut olan 167 <code>RewriteLog</code> gibi günlükleme modüllerinin yerini almıştır. 168 </div> 169 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 170<div class="section"> 171<h2><a name="accesslog" id="accesslog">Erişim Günlüğü</a></h2> 172 173 174 <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 176 <p>Sunucu erişim günlüğü sunucu tarafından işleme alınan tüm istekleri 177 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. 178 <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> yönergesi ile 179 günlük içeriğini kişiselleştirmek mümkündür. Bu bölümde sunucunun 180 bilgileri erişim günlüğüne kaydetmesi için nasıl yapılandırılacağından 181 bahsedilecektir.</p> 182 183 <p>Şüphesiz, bilginin erişim günlüğünde saklanması günlük yönetiminde ilk 184 adımı oluşturur. Sonraki adım yararlı istatistikleri üretmek için bu 185 bilgiyi incelemektir. Günlük incelemesi bu belgenin kapsamına dahil 186 değildir ve aslında bu işlem sunucunun yaptığı işlerden biri değildir. 187 Bu konu ve günlük incelemesi yapan uygulamalar hakkında daha ayrıntılı 188 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 190 <p>Apache httpd’nin çeşitli sürümlerinde erişim günlüklerini denetlemek 191 için kullanılan diğer modüller ve yönergeler arasında mod_log_referer, 192 mod_log_agent modülleri ve <code>TransferLog</code> yönergesi 193 sayılabilir. Artık, daha eski tüm diğer yönergelerin işlevselliklerini 194 bir araya toplayan <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi kullanılmaktadır.</p> 195 196 <p>Erişim günlüğünün girdi biçemi kolayca isteğe göre 197 düzenlenebilmektedir. Biçemi belirtmekte kullanılan biçem dizgesi, C 198 tarzı printf(1) biçem dizgesini andırır. Sonraki bölümlerde bazı 199 örneklere yer verilmiştir. Biçem dizgesini oluşturan belirteçlerin tam 200 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 201 Kişiselleştirilmesi</a> bölümüne bakınız.</p> 202 203 <h3><a name="common" id="common">Ortak Günlük Biçemi (OGB)</a></h3> 204 205 206 <p>Erişim günlüğü için sıklıkla kullanılan bir yapılandırma:</p> 207 208 <pre class="prettyprint lang-config"> 209LogFormat "%h %l %u %t \"%r\" %>s %b" common 210CustomLog logs/access_log common 211 </pre> 212 213 214 <p>İlk satırda belli bir biçem dizgesi için <code>common</code> diye bir 215 <em>takma ad</em> tanımlanmaktadır. Biçem dizgesi, sunucuya hangi 216 belli bir bilgi parçalarını günlükleyeceğini söyleyen % imli biçem 217 belirteçlerinden oluşur. Biçem dizgesine ayrıca dizgesel sabitler de 218 yerleştirilebilir ve bunlar erişim günlüğüne oldukları gibi 219 kopyalanırlar. Biçem dizgesi içinde çift tırnak karakteri (") biçem 220 dizgesini vaktinden önce sonlandırmaması için ters bölü çizgisi ile 221 öncelenmelidir. Biçem dizgesi ayrıca, satır sonlarını belirtmek için 222 "<code>\n</code>" ve sekmeleri belirtmek için "<code>\t</code>" 223 denetim karakterlerini de içerebilir.</p> 224 225 <p><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesi 226 evvelce tanımlanmış bir <em>takma adı</em> kullanarak yeni bir günlük 227 dosyası tanımlar. Erişim günlüğünün dosya ismi bölü çizgisi ile 228 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> 229 230 <p>Yukarıdaki yapılandırma günlük dosyasına girdileri Ortak Günlük 231 Biçemi (Common Log Format) adı verilen standart biçemde yazar. 232 Bu standart biçem başka HTTP sunucuları tarafından da kullanılır ve 233 çoğu günlük inceleme yazılımı tarafından tanınır. Ortak Günlük 234 Biçeminde üretilen günlük girdileri şöyle görünür:</p> 235 236 <div class="example"><p><code> 237 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET 238 /apache_pb.gif HTTP/1.0" 200 2326 239 </code></p></div> 240 241 <p>Bu günlük girdisini parça parça açıklayalım:</p> 242 243 <dl> 244 <dt><code>127.0.0.1</code> (<code>%h</code>)</dt> 245 246 <dd>Bu, sunucuya istek yapan istemcinin (uzak konağın) IP adresidir. 247 Eğer <code class="directive"><a href="./mod/core.html#hostnamelookups">HostnameLookups</a></code> 248 yönergesine <code>On</code> değeri atanmışsa sunucu bu IP adresi 249 için DNS sorgusu yapacak ve IP adresi yerine bulduğu konak ismini 250 yazmaya çalışacaktır. Bununla birlikte, bu işlem sunucuyu epeyce 251 yavaşlattığından önerilmemektedir. Konak isimlerini saptamak için en 252 iyisi günlük girdilerini <code class="program"><a href="./programs/logresolve.html">logresolve</a></code> gibi bir 253 günlük işlemcisinden geçirmektir. Burada raporlanan IP adresi 254 doğrudan istemcinin IP adresi olmayabilir. Eğer sunucu ile istemci 255 arasında bir vekil sunucu varsa bu IP adresi, vekil sunucunun IP 256 adresi olacaktır.</dd> 257 258 <dt><code>-</code> (<code>%l</code>)</dt> 259 260 <dd>Çıktıdaki bir "tire" imi istenen bilgi parçasının mevcut olmadığı 261 anlamına gelir. Bu durumda, mevcut olmayan bilgi istemci makine 262 üzerinde <code>identd</code> tarafından belirlenen istemcinin RFC 263 1413 kimliğidir. Bu bilgi oldukça güvenilmezdir ve sıkıca denetlenen 264 iç ağlar haricinde hemen hemen asla kullanılmamalıdır. Apache, 265 <code class="directive"><a href="./mod/mod_ident.html#identitycheck">IdentityCheck</a></code> yönergesine 266 <code>On</code> değeri atanmış olmadıkça bu bilgiyi saptamaya 267 uğraşmaz.</dd> 268 269 <dt><code>frank</code> (<code>%u</code>)</dt> 270 271 <dd>Bu, belge isteğinde bulunan kişinin HTTP kimlik doğrulamasıyla 272 saptanan kullanıcı kimliğidir. Bu değer CGI betiklerine 273 <code>REMOTE_USER</code> ortam değişkeni ile sağlanır. Eğer istek 274 için durum kodu 401 ise (aşağıya bakınız) henüz kullanıcının kimliği 275 doğrulanmamış olacağından bu değere güvenilmemelidir. Eğer belge 276 parola korumalı değilse günlüğün bu kısmı da yukarıdaki gibi 277 "<code>-</code>" olacaktır.</dd> 278 279 <dt><code>[10/Oct/2000:13:55:36 -0700]</code> 280 (<code>%t</code>)</dt> 281 282 <dd>İsteğin alındığı tarih ve saat. Biçemi şöyledir: 283 284 <p class="indent"> 285 <code>[gün/ay/yıl:saat:dakika:saniye dilim]<br /> 286 gün = 2 hane<br /> 287 ay = 3 harf<br /> 288 yıl = 4 hane<br /> 289 saat = 2 hane<br /> 290 dakika = 2 hane<br /> 291 saniye = 2 hane<br /> 292 dilim = (`+' | `-') 4 hane</code> 293 </p> 294 <p>Günlük biçem dizgesinde zaman gösterim biçemini 295 <code>%{<em>biçem</em>}t</code> şeklinde belirtmek de mümkündür. 296 Buradaki <code><em>biçem</em></code> dizgesi, stardart C 297 kütüphanesindeki <code>strftime(3)</code> işlevi için tanımlanmış 298 biçem belirteçleriyle veya desteklenen özel belirteçlerle 299 oluşturulabilir. Ayrıntılı bilgi için <code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code> 300 <a href="mod/mod_log_config.html#formats">biçem dizgelerine</a> 301 bakın.</p> 302 </dd> 303 304 <dt><code>"GET /apache_pb.gif HTTP/1.0"</code> 305 (<code>\"%r\"</code>)</dt> 306 307 <dd>İstemciden alınan istek satırının çift tırnaklar arasında 308 gösterilmesi istenmiştir. İstek satırı en yararlı bilgi parçalarını 309 içerir. Birincisi, istemci tarafından kullanılan yöntem 310 <code>GET</code>’miş. İkinci olarak istemci 311 <code>/apache_pb.gif</code> dosyasını istemiş ve üçüncü olarak 312 istemci <code>HTTP/1.0</code> protokolünü kullanmış. İstek satırının 313 bazı parçalarını bağımsız olarak da günlüklemek mümkündür. Örneğin, 314 "<code>%m %U%q %H</code>" dizgesi, yöntem, yol, sorgu dizgesi ve 315 protokolü kaydedecektir; bu dizge "<code>%r</code>" biçem 316 belirtecinin tek başına yaptığı işi yapar.</dd> 317 318 <dt><code>200</code> (<code>%>s</code>)</dt> 319 320 <dd>Bu, sunucunun istemciye gönderdiği durum kodudur. İsteğin 321 başarıyla yerine getirilip getirilmediğini gösterdiği için bu bilgi 322 çok değerlidir. Durum kodu 2 ile başlıyorsa istek başarıyla yerine 323 getirilmiştir, 3 ile başlıyorsa yönlendirilmiştir, 4 ile başlıyorsa 324 istemci tarafında bir hata oluşmuştur, 5 ile başlıyorsa sunucuda bir 325 hata oluşmuştur. Olası hata kodlarının tam listesi <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">RFC2616 Hiper 326 Metin Aktarım Protokolü</a>nün 10. bölümünde bulunabilir.</dd> 327 328 <dt><code>2326</code> (<code>%b</code>)</dt> 329 330 <dd>Son parça istemciye döndürülen nesnenin yanıt başlığı hariç 331 uzunluğudur. Eğer istemciye bir içerik döndürülmemişse bu değer 332 "<code>-</code>" olacaktır. Bunun yerine günlüğe "<code>0</code>" 333 yazdırmak için <code>%B</code> belirtecini kullanınız.</dd> 334 </dl> 335 336 337 <h3><a name="combined" id="combined">Birleşik Günlük Biçemi</a></h3> 338 339 340 <p>Sıklıkla kullanılan diğer bir biçem dizgesi Birleşik Günlük Biçemi 341 (Combined Log Format) olup şöyle kullanılabilir:</p> 342 343 <pre class="prettyprint lang-config"> 344LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined 345CustomLog log/access_log combined 346 </pre> 347 348 349 <p>Bu biçem ilaveten 2 alan içermesi dışında Ortak Günlük Biçemi ile 350 aynıdır. İlave alanların ikisi de <code>%{<em>başlık</em>}i</code> 351 biçeminde olup buradaki <code><em>başlık</em></code>, HTTP isteğindeki 352 başlık alanlarından biridir. Bu biçemin kullanıldığı bir erişim 353 günlüğü girdisi şöyle olurdu:</p> 354 355 <div class="example"><p><code> 356 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET 357 /apache_pb.gif HTTP/1.0" 200 2326 358 "http://www.example.com/start.html" "Mozilla/4.08 [en] 359 (Win98; I ;Nav)" 360 </code></p></div> 361 362 <p>Ek alanlar:</p> 363 364 <dl> 365 <dt><code>"http://www.example.com/start.html"</code> 366 (<code>\"%{Referer}i\"</code>)</dt> 367 368 <dd>HTTP istek başlığı "Referer". İstemcinin raporladığı isteğin 369 kaynaklandığı URI. (Bu isteğin yapılmasını sağlayan bağlantıyı 370 içeren URL veya istek bir sayfanın bileşenleri ile ilgiliyse istenen 371 sayfanın URL’si olabilir.)</dd> 372 373 <dt><code>"Mozilla/4.08 [en] (Win98; I ;Nav)"</code> 374 (<code>\"%{User-agent}i\"</code>)</dt> 375 376 <dd>Tarayıcı kimliğini içeren HTTP istek başlığı. Bu istemcinin 377 tarayıcısının raporladığı kendi tanıtım bilgisidir.</dd> 378 </dl> 379 380 381 <h3><a name="multiple" id="multiple">Çok Sayıda Erişim Günlüğü</a></h3> 382 383 384 <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 385 sayıda erişim günlüğü kolayca oluşturulabilir. Örneğin aşağıdaki 386 yönergelerle 3 tane erişim günlüğü oluşturulacaktır. İlki temel OGB 387 bilgisini içerirken diğer ikisi isteğin kaynaklandığı yeri ve tarayıcı 388 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 389 <code>AgentLog</code> yönergelerinin etkilerinin nasıl taklit 390 edileceğini de göstermektedir.</p> 391 392 <pre class="prettyprint lang-config"> 393LogFormat "%h %l %u %t \"%r\" %>s %b" common 394CustomLog logs/access_log common 395CustomLog logs/referer_log "%{Referer}i -> %U" 396CustomLog logs/agent_log "%{User-agent}i" 397 </pre> 398 399 400 <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 401 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 belirtilebilir.</p> 403 404 405 <h3><a name="conditional" id="conditional">Şarta Bağlı Günlükler</a></h3> 406 407 408 <p>Bazı durumlarda istemcinin yaptığı isteğe bağlı olarak erişim 409 günlüğünde belli girdilerin dışlanması gerekebilir. Bu, <a href="env.html">ortam değişkenleri</a> sayesinde kolayca yerine 410 getirilebilir. Önce isteğin belli koşulları sağladığını belirten bir 411 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. 412 Sonra da, ortam değişkenine bağlı olarak isteklerin günlüğe dahil 413 edilip edilmeyeceği <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> yönergesinin 414 <code>env=</code> deyimi kullanılarak belirtilir. Bazı örnekler:</p> 415 416 <pre class="prettyprint lang-config"> 417# yerel konaktan kaynaklanan istekleri imleyelim 418SetEnvIf Remote_Addr "127\.0\.0\.1" kaydetme 419# robots.txt dosyası isteklerini imleyelim 420SetEnvIf Request_URI "^/robots\.txt$" kaydetme 421# Kalanları günlüğe kaydedelim 422CustomLog logs/access_log common env=!kaydetme 423 </pre> 424 425 426 <p>Başka bir örnek olarak, Türkçe belge isteklerini bir dosyaya diğer 427 dillerdeki istekleri başka bir dosyaya kaydedelim.</p> 428 429 <pre class="prettyprint lang-config"> 430SetEnvIf Accept-Language "tr" turkce 431CustomLog logs/turkce_log common env=turkce 432CustomLog logs/diger_diller_log common env=!turkce 433 </pre> 434 435 436 <p>Bir arabellekleme senaryosuna arabelleğin verimli kullanılıp 437 kullanılmadığını bilmek isteyelim. Bu basitçe şöyle yapılabilir:</p> 438 439 <pre class="prettyprint lang-config"> 440SetEnv CACHE_MISS 1 441LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cache 442CustomLog logs/access_log common-cache 443 </pre> 444 445 446 <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ü 447 çalıştıracak ve başarılı olunduğu takdirde içeriği onsuz teslim 448 edecektir. Bu durumda arabellek kaybı <code>1</code> olarak 449 günlüklenirken arabellek sunumu <code>-</code> olarak 450 günlüklenecektir.</p> 451 452 <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 453 değerlerini günlüklemeyi de destekler:</p> 454 455 <pre class="prettyprint lang-config"> 456LogFormat "%400,501{User-agent}i" browserlog 457LogFormat "%!200,304,302{Referer}i" refererlog 458 </pre> 459 460 461 <p>Bu örnekte, HTTP durum kodu 400 veya 501 ise <code>User-agent</code> 462 başlığı günlüklenecektir. Aksi takdirde, günlüğe bir "-" yazılacaktır. 463 Benzer şekilde ikinci örnekte, HTTP durum kodu 200, 204 veya 302 464 <strong>değilse</strong> (durum kodlarının öncesindeki "!" imine 465 dikkat) <code>Referer</code> başlığı günlüklenecektir.</p> 466 467 <p>Koşulaa bağlı günlük kaydının çok esnek ve güçlü olabileceğini 468 göstermiş olsak da günlük içeriğini denetlemenin tek yolu bu değildir. 469 Günlük dosyaları sunucu etkinliğini eksiksiz olarak kaydedebildikleri 470 takdirde daha yararlı olurlar. Günlük dosyalarını sonradan işleme tabi 471 tutarak istenmeyen girdileri kaldırılmış bir kopya almak hem kolay hem 472 de daha yararlıdır.</p> 473 474 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 475<div class="section"> 476<h2><a name="rotation" id="rotation">Günlük Çevrimi</a></h2> 477 478 479 <p>Yükü ağır sunucularda günlük dosyalarına kaydedilen bilginin miktarı 480 çok büyük boyutlara ulaşabilir. 10.000 istek içeren bir erişim günlüğü 481 yaklaşık 1MB yer kaplar. Etkin günlük dosyasını belirli aralıklarla 482 değiştirmek veya silmek gerekebilir. Apache httpd çalışırken dosyayı sürekli 483 açık tuttuğu ve yazdığı için bu işlem sunucu çalışırken yapılamaz. Bu 484 bakımdan, günlük dosyası değiştirildikten veya silindikten sonra yeni 485 dosyanın açılması için <a href="stopping.html">sunucunun yeniden 486 başlatılması</a> gerekir.</p> 487 488 <p><a href="stopping.html#graceful">Nazikçe yeniden başlatmak</a> 489 suretiyle sunucunun, mevcut ve bekleyen bağlantıları kaybetmeden yeni 490 günlük dosyalarını açması sağlanabilir. Bununla birlikte, bu işlem 491 sırasında sunucunun eski isteklere sunumu bitirene kadar eski günlük 492 dosyalarına yazmaya devam edebilmesi gerekir. Bu bakımdan, yeniden 493 başlatmanın ardından eski günlük dosyaları üzerinde bir işlem yapmadan 494 önce biraz beklemek gerekir. Günlük dosyalarını döndürürken kullanılan 495 senaryolarda genellikle eski günlük dosyaları yer kazanmak için 496 sıkıştırılırlar:</p> 497 498 <div class="example"><p><code> 499 mv access_log access_log.old<br /> 500 mv error_log error_log.old<br /> 501 apachectl graceful<br /> 502 sleep 600<br /> 503 gzip access_log.old error_log.old 504 </code></p></div> 505 506 <p>Günlük çevrimi yapmanın başka bir yolu da sonraki bölümde açıklandığı 507 gibi <a href="#piped">borulu günlükler</a> kullanmaktır.</p> 508 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 509<div class="section"> 510<h2><a name="piped" id="piped">Borulu Günlükler</a></h2> 511 512 513 <p>Apache httpd hata ve erişim günlüklerini doğrudan bir dosyaya yazmak 514 yerine bir boru üzerinden başka bir sürece yazabilir. Bu yetenek ana 515 sunucuya herhangi bir kod eklemeksizin günlükleme esnekliğini şaşırtıcı 516 derecede arttırır. Günlükler boruya yazılmak istenirse dosya ismini boru 517 karakteriyle ("<code>|</code>") değiştirip ardına günlük girdilerini 518 standart girdisinden kabul edecek programın ismini eklemek yeterlidir. 519 Apache httpd başlatıldığı zaman borulu günlük işlemini de 520 başlatacaktır. Eğer sunucu çalışırken günlükleri kabul eden süreç 521 çökerse Apache httpd bu programı yeniden başlatır. (Bu son özelliği 522 sebebiyle bu tekniğe “güvenilir borulu günlükleme” adını veriyoruz.)</p> 523 524 <p>Borulu günlük süreçleri ana Apache httpd süreci tarafından başlatılır 525 ve bu süreçler ana Apache httpd sürecinin kullanıcı kimliğini miras 526 alırlar. Yani borulu günlükleme programları aslında root tarafından 527 çalıştırılmış gibi olur. Bu bakımdan, bu programları basit ve güvenilir 528 kılmak çok önemlidir.</p> 529 530 <p>Borulu günlüklerin önemli kullanım alanlarından biri de sunucuyu 531 yeniden başlatmak gerekmeksizin günlük çevrimini mümkün kılmaktır. 532 Apache HTTP sunucusu bu amaçla kullanılmak üzere 533 <code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code> diye bir program içerir. Örneğin, 534 günlükleri 24 saatte bir döndürmek isterseniz bunu şöyle 535 yapabilirsiniz:</p> 536 537 <pre class="prettyprint lang-config"> 538CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common 539 </pre> 540 541 542 <p>Borunun diğer ucundaki süreci başlatacak komutun tırnak içine 543 alındığına dikkat ediniz. Bu örnekler erişim günlüğü için verilmişse de 544 aynı teknik hata günlüğü için de kullanılabilir.</p> 545 546 <p>Hariçten bir uygulama olarak <a href="http://www.cronolog.org/">cronolog</a> isminde buna benzer ancak 547 çok daha esnek bir program daha vardır.</p> 548 549 <p>Borulu günlükler de şarta bağlı günlükleme kadar güçlü olmakla beraber 550 çevrimdışı ardıl işlemler gibi daha basit çözümler için 551 kullanılmamalıdır.</p> 552 553 <p>Öntanımlı olarak borulu günlük süreci bir kabuk kullanmadan 554 çalıştırılır. Kabuk kullanarak (genelde <code>/bin/sh -c</code> ile) 555 yapılmak istenirse "<code>|</code>" yerine "<code>|$</code>" 556 kullanılır:</p> 557 558 <pre class="prettyprint lang-config"> 559# Kabuk kullanarak "rotatelogs" çalıştırmak 560CustomLog "|$/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common 561 </pre> 562 563 564 <p>Bu, Apache 2.2 için öntanımlı davranıştı. Kabuk özelliklerine bağlı 565 olarak, yeniden başlatma sırasındaki sinyal işleme sorunları ve günlük 566 borulama uygulamasının yaşam süresi için ek bir kabuk süreci ile 567 sonuçlanabilir. Apache 2.2 ile uyumluluk açısından "<code>||</code>" 568 gösterimi de desteklenmekte olup "<code>|</code>" kullanımına 569 eşdeğerdir.</p> 570 571 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 572<div class="section"> 573<h2><a name="virtualhost" id="virtualhost">Sanal Konaklar</a></h2> 574 575 576 <p>Bir sunucu çok sayıda <a href="vhosts/">sanal konak</a> ile hizmet 577 sunarken bunların günlük kayıtları için çeşitli seçenekler mevcuttur. 578 İlk seçenekte, sanki sunucu tek bir konakla hizmet sunuyormuş gibi 579 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 580 bağlamına yerleştirerek tüm isteklerin aynı erişim ve hata günlüğüne 581 yazılmasını sağlamak olasıdır. Bu teknik, tek tek sanal konaklar için 582 kolayca istatistik toplamaya izin vermez.</p> 583 584 <p>Eğer <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> 585 veya <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> yönergesi bir 586 <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> bölümüne 587 yerleştirilirse bu sanal konağa bütün erişimler veya hatalar belirtilen 588 dosyaya günlüklenecektir. Böyle günlükleme yönergeleri içermeyen sanal 589 konakların günlükleri hala ana sunucunun hata ve erişim günlüklerine 590 yazılmaya devam edecektir. Bu teknik az sayıda sanal konak barındıran 591 sunucular için çok kullanışlıdır. Fakat sanal konak sayısı çok fazlaysa 592 bu teknikle günlük dosyalarını yönetmek çok karmaşık bir hal alabilir. 593 Ayrıca, <a href="vhosts/fd-limits.html">yetersiz dosya tanıtıcısı</a> 594 sorunlarıyla çok sık karşılaşılabilir.</p> 595 596 <p>Erişim günlükleri için çok az bir fedakarlıkla çok iyi bir çözüm vardır. 597 Günlük biçemine sanal konaklarla ilgili bilgi eklemek suretiyle tüm 598 konakların aynı günlük dosyasını kullanmaları olasıdır. Böylece günlük 599 dosyası sonradan her sanal konak için ayrı bir dosya oluşturmak üzere 600 ayrıştırılabilir. Örneğin, bu işlem için şu yönergeler kullanılıyor 601 olsun:</p> 602 603 <pre class="prettyprint lang-config"> 604LogFormat "%v %l %u %t \"%r\" %>s %b" ortaksankon 605CustomLog logs/access_log ortaksankon 606 </pre> 607 608 609 <p><code>%v</code> belirteci isteği sunan sanal konağın ismini günlüğe 610 yazmak için kullanılır. Daha sonra <a href="programs/other.html">split-logfile</a> gibi bir program 611 kullanarak, bu dosyadan her sanal konak için ayrı birer dosya elde 612 edilebilir.</p> 613 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 614<div class="section"> 615<h2><a name="other" id="other">Diğer Günlük Dosyaları</a></h2> 616 617 618 <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> 619 620 <h3>Gönderilen ve alınan bayt sayısının günlüklenmesi</h3> 621 622 623 <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 624 biçem belirteçlerine alınan ve gönderilen bayt sayıları için iki 625 belirteç (%I ve %O) ekler.</p> 626 627 628 <h3>Adli Günlük</h3> 629 630 631 <p><code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code> modülü istemci isteklerinin kanıt 632 olarak kullanılmak amacıyla günlüklenmesini sağlar. Günlükleme her 633 istek için isteğe hizmet sunmadan önce ve sonra olmak üzere iki defa 634 yapılır. Böylece günlük dosyasında başarılı her istek için iki satır 635 bulunur. Adli günlükleme çok sıkı kurallara tabi olup 636 kişiselleştirilemez. Güvenlik ve hata ayıklama aracı olarak yararlı 637 değildir.</p> 638 639 640 <h3><a name="pidfile" id="pidfile">PID Dosyası</a></h3> 641 642 643 <p>Apache httpd başlatıldığında, ana httpd sürecinin kimliği (PID) 644 <code>logs/httpd.pid</code> dosyasına kaydedilir. Bu dosyanın ismi 645 <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> yönergesi ile 646 değiştirilebilir. Bu süreç kimliği sistem yöneticisi tarafından ana 647 sürece sinyal göndererek artalan sürecini sonlandırmak veya yeniden 648 başlatmak için kullanılır. Windows üzerinde bu işlem için 649 <code>-k</code> komut satırı seçeneği kullanılır. Bu konuda daha 650 ayrıntılı bilgi edinmek için <a href="stopping.html">Durdurma ve 651 Yeniden Başlatma</a> belgesine bakınız.</p> 652 653 654 <h3><a name="scriptlog" id="scriptlog">Betik Günlüğü</a></h3> 655 656 657 <p><code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code> yönergesi CGI 658 betiklerinin girdi ve çıktılarını kaydetmenizi mümkün kılmak suretiyle 659 hata ayıklamaya yardımcı olur. Bu sadece deneysel amaçla kullanılmalı, 660 asıl sunucuya uygulanmamalıdır. <a href="mod/mod_cgi.html">mod_cgi</a> 661 belgesinde daha fazla bilgi bulunabilir.</p> 662 663 </div></div> 664<div class="bottomlang"> 665<p><span>Mevcut Diller: </span><a href="./en/logs.html" hreflang="en" rel="alternate" title="English"> en </a> | 666<a href="./fr/logs.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 667<a href="./ja/logs.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | 668<a href="./ko/logs.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 669<a href="./tr/logs.html" title="Türkçe"> tr </a></p> 670</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> 671<script type="text/javascript"><!--//--><![CDATA[//><!-- 672var comments_shortname = 'httpd'; 673var comments_identifier = 'http://httpd.apache.org/docs/2.4/logs.html'; 674(function(w, d) { 675 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 676 d.write('<div id="comments_thread"><\/div>'); 677 var s = d.createElement('script'); 678 s.type = 'text/javascript'; 679 s.async = true; 680 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 681 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 682 } 683 else { 684 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 685 } 686})(window, document); 687//--><!]]></script></div><div id="footer"> 688<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> 689<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[//><!-- 690if (typeof(prettyPrint) !== 'undefined') { 691 prettyPrint(); 692} 693//--><!]]></script> 694</body></html>