HTTP ログ <httpLogging>

  • 概要
  • 互換性
  • セットアップ
  • 方法
  • 構成
  • サンプル コード

※本ページに挿入されている画像をクリックすると、画像全体が別ウィンドウで表示されます。

概要

<httpLogging> 要素を使用すると、成功した要求のみのログ エントリ、失敗した要求のみのログ エントリ、または両方のログ エントリを生成するように IIS を構成できます。サーバー レベルで各Web サイトのログを構成すると、この要素を使用して個別の URL で選択的なログを有効にできます。既定では、HTTP ログをインターネット インフォメーション サービス (IIS) 7.0上のすべての要求に対して有効にします。

いつでもサイトのログ ファイルを表示して、失敗している要求と成功している要求を確認できます。IIS でサイトに対する特定の要求をログする必要がなくなった場合は、そのサイトのログを無効にしてください。

互換性

  IIS 7.0 IIS 6.0
注意 <httpLogging> は IIS 7.0 で新たに導入された要素です。

<httpLogging> 要素と <logFile> 要素は、IIS 6.0 の IIsWebService メタベース オブジェクトのログ プロパティに代わるものです。

セットアップ

<httpLogging> 要素は、IIS 7.0 の既定のインストールに含まれています。

方法

サイトまたはアプリケーションの HTTP ログを有効にする方法

  1. タスク バーで [スタート] ボタンをクリックし、[管理ツール] をポイントして [インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。

  2. [接続] ウィンドウで、サーバー名を展開して [サイト] を展開し、HTTP ログを構成する Web サイトまたはアプリケーションを選択します。

  3. [ホーム] ウィンドウで [ログ記録] をダブルクリックします。

  4. [操作] ウィンドウで、[有効にする] をクリックしてログを有効にします。

    拡大

  5. [形式] ドロップダウン リストで、サイトまたはアプリケーションに使用するログ ファイル形式を選択します。また、IIS でログ ファイルを格納する既定の場所を変更する場合は、[ディレクトリ] ボックスでサイトまたはアプリケーションのログ ファイルを格納するパスを入力します。

  6. (オプション) 手順 5 の [形式] ドロップダウン リストで [W3C] を選択した場合、[フィールドの選択] をクリックします。

  7. (オプション) [W3C ログ記録フィールド] ダイアログ ボックスで、ログに記録する W3C フィールドを選択し、記録しない W3C フィールドの選択を解除して、[OK] をクリックします。

    拡大

  8. [操作] ウィンドウで [適用] をクリックします。

    拡大

構成

サーバー レベルでの <httpLogging> 要素の構成は ApplicationHost.config ファイルで、サイト、アプリケーション、または URL レベルでのこの要素の構成は該当する Web.config ファイルで、それぞれ設定できます。

属性

属性 説明
dontLog オプションの Boolean 属性。

HTTP ログを成功した要求に対して有効にするかどうかを指定します。要求の状態コードが 400 未満の場合、要求は成功したと考えられます。

既定値は false です。
selectiveLogging オプションの enum 属性。

ログに記録する要求の種類を指定します。

selectiveLogging 属性には、次のいずれかの値を指定できます。

既定値は LogAll です。

---------------------------------------------------------------------------------------------------------

値: LogAll

説明:

  • すべての要求をログに記録します。
  • 数値は 0 です。

値: LogSuccessful

説明:

  • 成功した要求のみをログに記録します。成功した要求の HTTP 状態コード範囲は 100 ~ 399 です。
  • 数値は 1 です。

値: LogError

説明:

  • 成功しなかった要求のみをログに記録します。成功しなかった要求の HTTP 状態コード範囲は 400 ~ 999 です。
  • 数値は 2 です。

子要素

なし。

構成サンプル

次の構成例をサイトまたはアプリケーションの Web.config ファイルに組み込むと、HTTP ログを構成して、エラーを生成する要求だけを IIS でログに記録するように指定できます。

<configuration>
   <system.webServer>
      <httpLogging dontLog="false" selectiveLogging="LogError" />
   </system.webServer>
<configuration>

サンプル コード

次の例では、Contoso という Web サイトに対して HTTP ログを有効にして、IIS ですべての要求をログに記録するように指定します。

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/httpLogging /dontLog:"True" /commit:apphost

appcmd.exe set config "Contoso" -section:system.webServer/httpLogging /selectiveLogging:"LogAll" /commit:apphost

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection httpLoggingSection = config.GetSection("system.webServer/httpLogging", "Contoso");
         httpLoggingSection["selectiveLogging"] = @"LogAll";
         httpLoggingSection["dontLog"] = true;
         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim httpLoggingSection As ConfigurationSection = config.GetSection("system.webServer/httpLogging", "Contoso")
      httpLoggingSection("selectiveLogging") = "LogAll"
      httpLoggingSection("dontLog") = True
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var httpLoggingSection = adminManager.GetAdminSection("system.webServer/httpLogging", "MACHINE/WEBROOT/APPHOST/Contoso");
httpLoggingSection.Properties.Item("selectiveLogging").Value = "LogAll";
httpLoggingSection.Properties.Item("dontLog").Value = true;

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set httpLoggingSection = adminManager.GetAdminSection("system.webServer/httpLogging", "MACHINE/WEBROOT/APPHOST/Contoso")
httpLoggingSection.Properties.Item("selectiveLogging").Value = "LogAll"
httpLoggingSection.Properties.Item("dontLog").Value = True

adminManager.CommitChanges()