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