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