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