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