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