]> granicus.if.org Git - apache/blob - docs/manual/logs.html.ja.utf8
* Update xforms
[apache] / docs / manual / logs.html.ja.utf8
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="ja" xml:lang="ja"><head><!--
4         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>ログファイル - Apache HTTP サーバ</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" />
12 <link href="./images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="./mod/">モジュール</a> | <a href="./mod/directives.html">ディレクティブ</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">用語</a> | <a href="./sitemap.html">サイトマップ</a></p>
15 <p class="apache">Apache HTTP サーバ バージョン 2.3</p>
16 <img alt="" src="./images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
18 <div id="path">
19 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP サーバ</a> &gt; <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> &gt; <a href="./">バージョン
20             2.3</a></div><div id="page-content"><div id="preamble"><h1>ログファイル</h1>
21 <div class="toplang">
22 <p><span>言語: </span><a href="./en/logs.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
23 <a href="./fr/logs.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
24 <a href="./ja/logs.html" title="Japanese">&nbsp;ja&nbsp;</a> |
25 <a href="./ko/logs.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
26 <a href="./tr/logs.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
27 </div>
28 <div class="outofdate">この日本語訳はすでに古くなっている可能性があります。
29           更新された内容を見るには英語版をご覧下さい。</div>
30
31     <p>ウェブサーバを効果的に管理するためには、サーバの活動やパフォーマンス、
32     今発生しているかもしれない問題に関するフィードバックを得ることが必要です。
33     Apache HTTP サーバには非常に包括的で柔軟なロギング機能があります。
34     この文書はロギング機能の設定の仕方と、ログに何が書かれているかを
35     理解するための方法を説明します。</p>
36   </div>
37 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#security">
38     セキュリティに関する警告</a></li>
39 <li><img alt="" src="./images/down.gif" /> <a href="#errorlog">エラーログ</a></li>
40 <li><img alt="" src="./images/down.gif" /> <a href="#accesslog">アクセスログ</a></li>
41 <li><img alt="" src="./images/down.gif" /> <a href="#rotation">ログの交替</a></li>
42 <li><img alt="" src="./images/down.gif" /> <a href="#piped">パイプ経由のログ</a></li>
43 <li><img alt="" src="./images/down.gif" /> <a href="#virtualhosts">バーチャルホスト</a></li>
44 <li><img alt="" src="./images/down.gif" /> <a href="#other">他のログファイル</a></li>
45 </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">
49     セキュリティに関する警告</a></h2>
50
51     <p>Apache がログファイルを書いているディレクトリに書き込める人は、
52     ほぼ確実にサーバが起動された uid へのアクセスを手に入れることができます。
53     そして、それは通常は root ユーザです。
54     ちゃんと結果を考えることなく、そのディレクトリへの
55     書き込み権限を与え<em>ない</em>でください。詳しくは
56     <a href="misc/security_tips.html">セキュリティのこつ</a>の文書を
57     読んでください。</p>
58
59     <p>加えて、ログファイルにはクライアントからの情報がそのまま、
60     エスケープされることなく書かれています。ですから、悪意のある
61     クライアントがログファイルに制御文字を挿入することができます。
62     生のログを扱うときは注意してください。</p>
63   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
64 <div class="section">
65 <h2><a name="errorlog" id="errorlog">エラーログ</a></h2>
66     
67     <table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</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>
68
69     <p><code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> ディレクティブにより
70     名前と場所が決まるサーバのエラーログは、一番重要なログファイルです。
71     Apache の診断情報はここに送られ、リクエストを処理しているときに
72     発生したエラーはすべてここに記録されます。サーバを起動したときや、
73     サーバの動作に問題が起こったときは、一番最初に調べるべき
74     ところです。間違いの詳細や修正方法がそこに書かれていることが
75     よくあります。</p>
76
77     <p>エラーログは普通はファイルに書かれます (通常 Unix システムでは
78     <code>error_log</code>、Windows と OS/2 では <code>error.log</code>)。
79     Unix システムではエラーを <code>syslog</code> や
80     <a href="#piped">パイプでプログラムに送る</a> ことができます。</p>
81
82     <p>エラーログの書式は比較的自由度の高いもので、説明的に書かれています。
83     ただし、いくつかの情報はほとんどのエラーログのエントリにあります。
84     例えば、代表的なものに次のようなメッセージがあります。</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>ログエントリの最初の項目はメッセージの日付と時刻です。
93     二つめの項目は報告されているエラーの重要度です。
94     <code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code> で重要度のレベルを
95     制限することによりエラーログに送られるエラーの種類を制御することが
96     できます。三つ目の項目はエラーを発生させたクライアントの IP アドレス
97     です。残りはメッセージで、この場合はサーバがクライアントのアクセスを
98     拒否するように設定されている、ということを示しています。
99     サーバはリクエストされた文書の (ウェブのパスではなく) ファイルシステムの
100     パスを報告します。</p>
101
102     <p>非常に広範囲のメッセージがエラーログに現れます。たいていのものは
103     上の例のような感じです。エラーログには CGI スクリプトのデバッグ
104     出力も書かれます。CGI スクリプトが <code>stderr</code> に書いた
105     すべての情報は直接エラーログにコピーされます。</p>
106
107     <p>情報を追加したり削除したりしてエラーログをカスタマイズすることは
108     できません。しかし、リクエストに対するエラーログのエントリは、
109     対応するエントリが<a href="#accesslog">アクセスログ</a>にあります。
110     例えば、上の例のエントリはアクセスログのステータスコード 403 の
111     エントリに対応します。アクセスログはカスタマイズ可能ですので、
112     そちらを使うことによりエラーの状況に関する情報をより多く
113     手に入れることができます。</p>
114
115     <p>テストの最中は、問題が発生しているかどうかを見るために、
116     常にエラーログを監視するのが役に立つ場合がよくあります。
117     Unix システムでは、次のものを使うことができます。</p>
118
119     <div class="example"><p><code>
120       tail -f error_log
121     </code></p></div>
122   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
123 <div class="section">
124 <h2><a name="accesslog" id="accesslog">アクセスログ</a></h2>
125     
126
127     <table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</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>
128
129     <p>サーバアクセスログはサーバが処理をしたすべてのリクエストを
130     記録します。アクセスログの場所と内容は <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>
131     ディレクティブにより決まります。ログの内容の選択を簡潔にするために
132     <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code>
133     ディレクティブを使用することができます。このセクションはアクセスログに
134     情報を記録するためのサーバの設定方法を説明します。</p>
135
136     <p>もちろん、アクセスログに情報を蓄積することはログ管理の
137     始まりに過ぎません。次の段階は有用な統計を取るためにこの情報を
138     解析することです。一般的なログ解析はこの文書の範囲外で、
139     ウェブサーバ自身の仕事というわけでもありません。この話や、
140     ログ解析を行なうアプリケーションの情報を得るには、<a href="http://dmoz.org/Computers/Software/Internet/Site_Management/Log_analysis/">
141     Open Directory</a> や <a href="http://dir.yahoo.com/Computers_and_Internet/Software/Internet/World_Wide_Web/Servers/Log_Analysis_Tools/">
142     Yahoo</a> を調べてください。</p>
143
144     <p>いろんなバージョンの Apache httpd が mod_log_config,
145     mod_log_agent, <code>TransferLog</code> ディレクティブといった、
146     他のモジュールやディレクティブを使ってアクセスのロギングを
147     制御してきました。今では、<code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> がすべての古い
148     ディレクティブの機能を含むようになっています。</p>
149
150     <p>アクセスログの書式は非常に柔軟な設定が可能です。
151     書式は C の printf(1) フォーマット文字列に非常に似た
152     <code class="directive"><a href="./mod/mod_log_config.html#フォーマット文字列">フォーマット文字列</a></code>
153     により指定されます。いくつか次の節で例を示します。
154     フォーマット文字列に使用できる内容の一覧は <a href="mod/mod_log_config.html">mod_log_config の文書</a>
155     を見てください。</p>
156
157     <h3><a name="common" id="common">Common Log Format</a></h3>
158       
159
160       <p>アクセスログのよくある設定に以下のものがあります。</p>
161
162       <div class="example"><p><code>
163         LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common<br />
164          CustomLog logs/access_log common
165       </code></p></div>
166
167       <p>これは、<em>ニックネーム</em> <code>common</code> を定義し、
168       ログのフォーマット文字列の一つと関連付けます。フォーマット文字列は
169       パーセントディレクティブからなり、それぞれのパーセントディレクティブは
170       サーバにどの情報をロギングするかを指示します。フォーマット文字列に
171       文字をそのまま入れることもでき、それらはログの出力に直接コピーされます。
172       そこに引用文字 (<code>"</code>) を書くときは、
173       フォーマット文字列の最後として解釈
174       されることを防ぐためにバックスラッシュでエスケープする必要があります。
175       フォーマット文字列には改行用の "<code>\n</code>"、タブ用の
176       "<code>\t</code>" という特別な制御文字も含めることができます。</p>
177
178       <p><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> ディレクティブは
179       既に定義された
180       <em>ニックネーム</em> を使って新しいログファイルを設定します。
181       アクセスログのファイル名はスラッシュで始まらない限り、
182       <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code> からの相対パスとして
183       扱われます。</p>
184
185       <p>上の設定は Common Log Format (CLF) と呼ばれる形式で
186       ログエントリを書きます。この標準の形式は異なるウェブサーバの多くが
187       生成することができ、多くのログ解析プログラムが読みこむことができます。
188       CLF により生成されたログファイルのエントリは以下のようになります:</p>
189
190       <div class="example"><p><code>
191         127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
192         /apache_pb.gif HTTP/1.0" 200 2326
193       </code></p></div>
194
195       <p>このログエントリのそれぞれの部分の意味は以下で説明します。</p>
196
197       <dl>
198         <dt><code>127.0.0.1</code> (<code>%h</code>)</dt>
199
200         <dd>これはサーバへリクエストをしたクライアント (リモートホスト)
201         の IP アドレスです。<code class="directive"><a href="./mod/core.html#hostnamelookups">HostnameLookups</a></code> が
202         <code>On</code> の場合は、サーバはホスト名を調べて、
203         IP アドレスが書かれているところに記録します。しかし、この設定は
204         サーバをかなり遅くするので、あまりお勧めできません。
205         そうではなく、<code class="program"><a href="./programs/logresolve.html">logresolve</a></code> の
206         ようなログの後処理を行なうプログラムでホスト名を調べるのが良いでしょう。
207         ここに報告される IP アドレスは必ずしもユーザが使っているマシンの
208         ものであるとは限りません。ユーザとサーバの間にプロキシサーバが
209         あれば、このアドレスは元のマシンのものではなく、プロキシの
210         アドレスになります。</dd>
211
212         <dt><code>-</code> (<code>%l</code>)</dt>
213
214         <dd>出力中の「ハイフン」は要求された情報が手に入らなかったということを
215         意味します。この場合、取得できなかった情報はクライアントのマシンの
216         <code>identd</code> により決まる RFC 1413 のクライアントの
217         アイデンティティです。この情報はあまり信用することができず、
218         しっかりと管理された内部ネットワークを除いては使うべきではありません。
219         Apache は <code class="directive"><a href="./mod/core.html#identitycheck">IdentityCheck</a></code> が
220         <code>On</code> になっていない限り、この情報を得ようとすらしません。</dd>
221
222         <dt><code>frank</code> (<code>%u</code>)</dt>
223
224         <dd>これは HTTP 認証による、ドキュメントをリクエストした人の
225         ユーザ ID です。CGI スクリプトには通常同じ値が <code>REMOTE_USER</code>
226         環境変数として与えられます。リクエストのステータスコード
227         (以下を参照) が 401 であった場合は、ユーザは認証に失敗しているので、
228         この値は信用できません。ドキュメントがパスワードで保護されていない
229         場合は、この部分は前のものと同じように "<code>-</code>" に
230         なります。</dd>
231
232         <dt><code>[10/Oct/2000:13:55:36 -0700]</code>
233         (<code>%t</code>)</dt>
234
235         <dd>
236           サーバがリクエストを受け取った時刻です。書式は:
237
238             <p class="indent">
239               <code>[day/month/year:hour:minute:second zone]<br />
240                day = 2*digit<br />
241                month = 3*letter<br />
242                year = 4*digit<br />
243                hour = 2*digit<br />
244                minute = 2*digit<br />
245                second = 2*digit<br />
246                zone = (`+' | `-') 4*digit</code>
247             </p>
248           ログのフォーマット文字列に <code>%{format}t</code> を
249           指定することで、別の形式で時刻を表示させることもできます。
250           このとき、<code>format</code> は C の標準ライブラリの
251           <code>strftime(3)</code> の形式になります。
252         </dd>
253
254         <dt><code>"GET /apache_pb.gif HTTP/1.0"</code>
255         (<code>\"%r\"</code>)</dt>
256
257         <dd>クライアントからのリクエストが二重引用符の中に示されています。
258         リクエストには多くの有用な情報があります。まず、この場合クライアントが
259         使ったメソッドは <code>GET</code> です。次に、クライアントは
260         リソース <code>/apache_pb.gif</code> を要求しました。そして、
261         クライアントはプロトコル <code>HTTP/1.0</code> を使用しました。
262         リクエストの各部分を独立にログ収集することもできます。例えば、
263         フォーマット文字列 "<code>%m %U%q %H</code>" は
264         メソッド、パス、クエリ文字列、プロトコルをログ収集し、
265         結局 "<code>%r</code>" とまったく同じ出力になります。</dd>
266
267         <dt><code>200</code> (<code>%&gt;s</code>)</dt>
268
269         <dd>サーバがクライアントに送り返すステータスコードです。
270         この情報は、リクエストが成功応答 (2 で始まるコード) であったか、
271         リダイレクション (3 で始まるコード) であったか、クライアントによる
272         エラー (4 で始まるコード) であったか、サーバのエラー (5 で始まるコード)
273         であったか、を表すので、非常に大切です。ステータスコードの
274         完全なリストは <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">HTTP
275         規格</a> (RFC2616 第 10 節) にあります。</dd>
276
277         <dt><code>2326</code> (<code>%b</code>)</dt>
278
279         <dd>この最後の部分はクライアントに送信されたオブジェクトの、
280         応答ヘッダを除いたサイズを表します。コンテントがクライアントに送られなかった
281         場合は、この値は "<code>-</code>" になります。コンテントが無い場合に
282         "<code>0</code>" をログ収集するには、<code>%b</code> ではなく
283         <code>%B</code> を使ってください。</dd>
284
285       </dl>
286     
287
288     <h3><a name="combined" id="combined">Combined Log Format</a></h3>
289       
290
291       <p>もう一つのよく使われる書式は Combined Log Format と呼ばれています。
292       以下のようにして使うことができます。</p>
293
294       <div class="example"><p><code>
295         LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\"
296         \"%{User-agent}i\"" combined<br />
297          CustomLog log/access_log combined
298       </code></p></div>
299
300       <p>この書式の最初の方は Common Log Format とまったく同じで、最後に
301       二つ追加のエントリがあります。追加のエントリはパーセントディレクティブ
302       <code>%{<em>header</em>}i</code> を使っています。ここで
303       <em>header</em> は HTTP のリクエストヘッダのどれかです。この書式による
304       アクセスログは以下のような感じになります:</p>
305
306       <div class="example"><p><code>
307         127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
308         /apache_pb.gif HTTP/1.0" 200 2326
309         "http://www.example.com/start.html" "Mozilla/4.08 [en]
310         (Win98; I ;Nav)"
311       </code></p></div>
312
313       <p>追加のエントリは:</p>
314
315       <dl>
316         <dt><code>"http://www.example.com/start.html"</code>
317         (<code>\"%{Referer}i\"</code>)</dt>
318
319         <dd>"Referer" (意図的な綴り間違い) HTTP リクエストヘッダです。
320         これはクライアントが報告してくる参照元のサイトを表します。
321         (この場合は、<code>/apache_pb.gif</code> にリンクしているか、
322         それを含んでいるページです)。</dd>
323
324         <dt><code>"Mozilla/4.08 [en] (Win98; I ;Nav)"</code>
325         (<code>\"%{User-agent}i\"</code>)</dt>
326
327         <dd>User-Agent HTTP リクエストヘッダです。これはクライアントのブラウザが
328         自分自身のことを報告してくる情報です。</dd>
329       </dl>
330     
331
332     <h3><a name="multiple" id="multiple">複数のアクセスログ</a></h3>
333       
334
335     <p>複数のアクセスログは単に設定ファイルに複数の <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>
336     ディレクティブを書くことで作成されます。例えば、以下のディレクティブは
337     三つのアクセスログを作ります。最初のものは基本的な CLF の情報で、
338     二つ目と三つ目は referer とブラウザの情報です。最後二つの
339     <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> は
340     <code>ReferLog</code> ディレクティブと
341     <code>AgentLog</code> ディレクティブの効果をまねる方法を示しています。</p>
342
343       <div class="example"><p><code>
344         LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common<br />
345         CustomLog logs/access_log common<br />
346         CustomLog logs/referer_log "%{Referer}i -&gt; %U"<br />
347         CustomLog logs/agent_log "%{User-agent}i"
348       </code></p></div>
349
350     <p>この例は <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> で
351     ニックネームを定義する必要がない、
352     ということも示しています。ニックネームの代わりに、
353     <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> ディレクティブに
354     直接ログの書式を指定することができます。</p>
355     
356
357     <h3><a name="conditional" id="conditional">条件付きログ</a></h3>
358       
359
360     <p>クライアントのリクエストの特徴に基づいてアクセスログにエントリの
361     一部をロギングしない方が便利なことがあります。これは <a href="env.html">環境変数</a> の補助により簡単に実現できます。まず、
362     リクエストが何らかの条件に合うということを表すために環境変数が
363     設定される必要があります。これは通常は <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> により
364     行なわれます。そして、<code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> ディレクティブの
365     <code>env=</code> 節を使って環境変数が設定されているリクエストを
366     含めたり排除したりすることができます。いくつか例を挙げます:</p>
367
368       <div class="example"><p><code>
369         # Mark requests from the loop-back interface<br />
370         SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog<br />
371         # Mark requests for the robots.txt file<br />
372         SetEnvIf Request_URI "^/robots\.txt$" dontlog<br />
373         # Log what remains<br />
374         CustomLog logs/access_log common env=!dontlog
375       </code></p></div>
376
377     <p>他の例として、英語を話す人からのリクエストとそれ以外の人からのリクエストを
378     分けたい、という場合を考えてみてください。</p>
379
380       <div class="example"><p><code>
381         SetEnvIf Accept-Language "en" english<br />
382         CustomLog logs/english_log common env=english<br />
383         CustomLog logs/non_english_log common env=!english
384       </code></p></div>
385
386     <p>ここまででは条件付きロギングが非常に強力で柔軟であることを示してきましたが、
387     それがログの内容を制御する唯一の方法というわけではありません。ログファイルは
388     サーバの活動の完全な記録である方がより役に立ちます。単純にログファイルを
389     後処理して、考慮したくないログを削除する方が簡単であることがよくあります。</p>
390     
391   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
392 <div class="section">
393 <h2><a name="rotation" id="rotation">ログの交替</a></h2>
394     
395
396     <p>普通の負荷のサーバでさえ、ログファイルに保存される情報の量は
397     膨大になります。アクセスログのファイルは普通 10,000 リクエスト毎に
398     1 MB 以上増えます。ですから、既存のログを移動したり、削除したりして、
399     定期的にログを交替させることが必要になります。これはサーバの実行中には
400     行なえません。というのは、Apache はファイルが open されている間は
401     ずっと古いログファイルに書き続けるからです。
402     新しいログファイルを open できるように、ログファイルが移動されたり
403     削除された後に、サーバを<a href="stopping.html">再起動</a>する
404     必要があります。</p>
405
406     <p><em>優雅な</em> 再起動を行なうことで、サーバは既存のコネクションや
407     処理待ちのコネクションを失うことなく新しいログファイルを open させる
408     ことができます。しかし、これを実現するために、サーバは古いリクエストを
409     扱っている間は古いログファイルに書き続ける必要があります。
410     ですから、再起動の後ではログファイルの処理を始める前に、しばらく待たなければ
411     なりません。単にログを交替させて、ディスクの節約のために古いログを
412     圧縮する普通のシナリオは:</p>
413
414     <div class="example"><p><code>
415       mv access_log access_log.old<br />
416       mv error_log error_log.old<br />
417       apachectl graceful<br />
418       sleep 600<br />
419       gzip access_log.old error_log.old
420     </code></p></div>
421
422     <p>ログの交替をするもう一つの方法は<a href="#piped">パイプ経由のログ</a>を使うもので、次の節で説明されています。</p>
423   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
424 <div class="section">
425 <h2><a name="piped" id="piped">パイプ経由のログ</a></h2>
426     
427
428     <p>Apache httpd はエラーログとアクセスログをファイルに直接書く代わりに、
429     パイプを通して別のプログラムに書き出すことができます。
430     この機能により、主サーバにコードを追加することなく
431     ロギングの柔軟性が非常に高まっています。パイプにログを書くためには、
432     単にファイル名をパイプ文字 "<code>|</code>" に置き換え、その続きに
433     標準入力からログのエントリを受けとる実行プログラムの名前を書くだけです。
434     Apache はパイプ経由のログ用のプロセスをサーバの起動時に実行し、
435     サーバの実行中にそのプログラムがクラッシュしたときはそれを再び
436     実行します。(この最後の機能がこの技術が「信頼性のあるパイプ経由のロギング」
437     と呼ばれている理由です。)</p>
438
439     <p>パイプ経由のログ用のプロセスは Apache httpd の親プロセスから起動され、
440     そのプロセスのユーザ ID を継承します。これは、パイプ経由のログ用の
441     プログラムは普通 root として実行されることを意味します。
442     ですから、プログラムを簡単で安全に保つことが非常に重要です。</p>
443
444     <p>パイプ経由のログの重要な利用法は、サーバの再起動なしでログの交替を
445     することです。Apache HTTP サーバにはこのための  <code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code> と呼ばれる簡単な
446     プログラムが付属しています。たとえば、24 時間毎にログを交替させるには、
447     以下のものを使うことができます:</p>
448
449     <div class="example"><p><code>
450       CustomLog "|/usr/local/apache/bin/rotatelogs
451       /var/log/access_log 86400" common
452     </code></p></div>
453
454     <p>パイプの先で呼ばれるコマンド全体が引用符で囲まれていることに注目して
455     ください。この例はアクセスログを使っていますが、エラーログにも同じ技術を
456     使うことができます。</p>
457
458     <p>似ているけれど、よりずっと柔軟な
459     <a href="http://www.cronolog.org/">cronolog</a> というログ交替用の
460     プログラムが外部のサイトにあります。</p>
461
462     <p>条件付きロギングと同様、パイプ経由のログは非常に強力な
463     道具ですが、オフラインの後処理のような、より簡単な解決方法があるときは
464     使わない方が良いでしょう。</p>
465   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
466 <div class="section">
467 <h2><a name="virtualhosts" id="virtualhosts">バーチャルホスト</a></h2>
468     
469
470     <p>多くの <a href="vhosts/">バーチャルホスト</a> のあるサーバを実行している
471     ときは、ログファイルの扱い方にいくつかの方法があります。
472     まず、単独のホストのみのサーバとまったく同じようにログを使うことができます。
473     ロギングディレクティブを主サーバのコンテキストの
474     <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> セクションの外に置くことで、
475     すべてのログを同じアクセスログとエラーログにログ収集することができます。
476     この手法では個々のバーチャルホストの統計を簡単にとることはできません。</p>
477
478     <p><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code> や
479     <code class="directive"><a href="./mod/mod_log_config.html#errorlog">ErrorLog</a></code> ディレクティブが
480     <code class="directive"><a href="./mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> の中に
481     置かれた場合は、そのバーチャル
482     ホストへのすべてのリクエストやエラーがそこで指定されたファイルにのみ
483     ログ収集されます。ロギングディレクティブのないバーチャルホストは
484     依然としてリクエストが主サーバのログに送られます。この手法は少ない
485     バーチャルホストに対しては非常に有用ですが、ホストの数が非常に多くなると
486     管理が大変になります。さらに、<a href="vhosts/fd-limits.html">ファイル記述子の限界</a>の問題を起こすことが
487     あります。</p>
488
489     <p>アクセスログには、非常に良い妥協案があります。バーチャルホストの
490     情報をログのフォーマット文字列に加えることで、すべてのホストへの
491     リクエストを同じログにログ収集して、後でログを個々のファイルに分割することが
492     できます。たとえば、以下のディレクティブを見てください。</p>
493
494     <div class="example"><p><code>
495       LogFormat "%v %l %u %t \"%r\" %&gt;s %b"
496       comonvhost<br />
497       CustomLog logs/access_log comonvhost
498     </code></p></div>
499
500     <p><code>%v</code> がリクエストを扱っているバーチャルホストの名前を
501     ログ収集するために使われています。そして、<a href="programs/other.html">split-logfile</a> のようなプログラムを
502     使ってアクセスログを後処理することで、
503     バーチャルホスト毎のファイルにログを分割することができます。</p>
504
505     <p>残念ながら、エラーログには同様の手法はありません。ですから、
506     すべてのバーチャルホストを同じエラーログの中に混ぜるか、
507     バーチャルホスト毎にエラーログを使うかを選ばなければなりません。</p>
508   </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
509 <div class="section">
510 <h2><a name="other" id="other">他のログファイル</a></h2>
511     
512
513     <table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</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></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_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>
514
515     <h3>実際に送受信したバイト数のログ</h3>
516       
517
518       <p><code class="module"><a href="./mod/mod_logio.html">mod_logio</a></code> は、
519          ネットワーク上で実際に送受信した数をログする
520          二つのフィールド (%I と %O) を
521          <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code> 
522          ディレクティブに追加します。</p>
523     
524
525     <h3>Forensic ログ</h3>
526       
527
528       <p><code class="module"><a href="./mod/mod_log_forensic.html">mod_log_forensic</a></code> はクライアントリクエストの
529          forensic ログを取ります。ログはリクエスト処理前と処理後に
530          行われますので、1 リクエストに対して 2 行のログが出力されます。
531          forensic ロガーはとても厳密でカスタマイズできません。
532          デバッグやセキュリティ用のツールとして有効かもしれません。</p>
533     
534
535     <h3><a name="pidfile" id="pidfile">PID ファイル</a></h3>
536       
537
538       <p>起動時に、Apache は親 httpd プロセスのプロセス ID を
539       <code>logs/httpd.pid</code> に保存します。この
540       ファイル名は <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> ディレクティブを使って
541       変更することができます。プロセス ID は管理者が親プロセスに
542       シグナルを送ることでデーモンを再起動したり終了させたりするときに
543       使用します。Windows では、代わりに -k コマンドオプションを
544       使ってください。詳しい情報は <a href="stopping.html">終了と
545       再起動</a> のページを見てください。</p>
546     
547
548     <h3><a name="scriptlog" id="scriptlog">スクリプトログ</a></h3>
549       
550
551       <p>デバッグの補助のために、<code class="directive"><a href="./mod/mod_cgi.html#scriptlog">ScriptLog</a></code> ディレクティブは
552       CGI スクリプトの入力と出力を記録するようにできます。
553       これはテスト用にのみ使用して、通常のサーバでは使用しないでください。
554       詳しい情報は <a href="mod/mod_cgi.html">mod_cgi の文書</a> にあります。</p>
555     
556
557     <h3><a name="rewritelog" id="rewritelog">リライトログ</a></h3>
558       
559
560       <p><code class="directive"><a href="./mod/mod_rewrite.html#mod_rewrite">mod_rewrite</a></code> の強力で
561       複雑な機能を
562       使っているときは、ほぼいつもデバッグを簡単にするために
563       <code class="directive"><a href="./mod/mod_rewrite.html#rewritelog">RewriteLog</a></code> の使用が
564       必要でしょう。このログファイルにはリライトエンジンがリクエストを
565       書き換える方法の詳細な解析が出力されます。詳しさの度合は <code class="directive"><a href="./mod/mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></code>
566       で制御できます。</p>
567     
568   </div></div>
569 <div class="bottomlang">
570 <p><span>言語: </span><a href="./en/logs.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
571 <a href="./fr/logs.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
572 <a href="./ja/logs.html" title="Japanese">&nbsp;ja&nbsp;</a> |
573 <a href="./ko/logs.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
574 <a href="./tr/logs.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
575 </div><div id="footer">
576 <p class="apache">Copyright 2011 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
577 <p class="menu"><a href="./mod/">モジュール</a> | <a href="./mod/directives.html">ディレクティブ</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">用語</a> | <a href="./sitemap.html">サイトマップ</a></p></div>
578 </body></html>