次の方法で共有


ログ ファイルの既定のカスタム フィールド <customFields>

概要

<logFile> 要素の <customFields> 要素には、W3C ログ内の既定のカスタム フィールドのコレクションに関する構成設定を指定します。

IIS 8.5 を使用すると、標準のログ セットに加えて、カスタム フィールドをログできます。 これらのカスタム フィールドには、要求ヘッダー、応答ヘッダー、またはサーバー変数からのデータを含めることができます。 これらのフィールドをログするために、カスタム ログ モジュールを作成せずに、シンプルに構成プロパティを設定できます。 この機能は、サイト レベルでのみ使用できます。 カスタム フィールドを追加するには、ログ ファイル形式が W3C である必要があります。

カスタム フィールドが標準セットに追加されると、ログ ファイルにカスタム フィールドが含まれていることを示すために "_x" がファイル名に追加されます。 カスタム フィールドに追加されるデータの合計量が、65,536 バイトを超えることはできません。 カスタム ログ データがその量を超えると、IIS がデータを切り捨てます。 ログ ファイルのすべてのカスタム フィールドについて、1 フィールドに追加できるデータの最大量は、maxCustomFieldLength 属性によって指定されます。

カスタム フィールドを構成するには、フィールド名、ソース名、およびソースの種類を指定します。 カスタム情報をサーバー変数に格納し、サーバー変数をログできます。 ソースの種類を選択したら、既存のソース名を選択するか、新しいソース名を入力できます。

カスタム フィールドを使用すると、プロセスに関する有用なデータを収集し、IIS ログに集約できます。 ロード バランサーを含むシステムでは、ロード バランサーの IP アドレスがログに表示される場合がありますが、元の要求元がわかるように X-Forwarded-For ヘッダーをカスタム フィールドにログできます。 プロセスのアップタイムをログして、その日にプロセスが再起動された回数を確認できます。 メモリが過剰に使用され始めた場合は、メモリの消費を開始した時点、要求されたページ、クライアントの ID (悪意のある操作を行っている場合に特に役立ちます) を確認できます。

互換性

バージョン メモ
IIS 10.0 <customFields> 要素は IIS 10.0 では変更されませんでした。
IIS 8.5 <customFields> 要素が IIS 8.5 で導入されました。
IIS 8.0 該当なし
IIS 7.5 該当なし
IIS 7.0 該当なし
IIS 6.0 該当なし

段取り

<customFields> 要素は IIS 8.5 以降の既定のインストールに含まれています。

操作方法

既定のカスタム フィールドを追加する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、次に [インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ペインでサーバーを選びます。

  3. [IIS] セクションの [ログ記録] をダブルクリックします。

  4. [ログ記録] ホーム ページの [形式] で、[W3C] を選びます。

  5. [フィールドの選択] をクリックします。

  6. [W3C ログ記録フィールド] ダイアログ ボックスで、[フィールドの追加] をクリックします。

  7. [カスタム フィールドの追加] ダイアログ ボックスで、[フィールド名] に名前 (スペースなし) を入力し、[ソースの種類][要求ヘッダー][応答ヘッダー]、または [サーバー変数] のいずれかを選びます。

  8. [ソース] で、一覧からソースを選ぶか、カスタム ソースの名前を入力します。

  9. [OK] をクリックしてから、もう一度 [OK] をクリックします。

  10. [操作] ペインで [適用] をクリックします。

    [フィールド名] ボックスを含む [ユーザー設定フィールドの追加] ダイアログ ボックスを示すスクリーンショット。[ソースの種類] ボックスで [要求ヘッダー] が選択されています。

カスタム フィールドの既定の最大長を構成する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウでサーバーを選択してから、[管理] 領域の [構成エディター] をダブルクリックします。

  3. 構成エディターで、[セクション] として system.applicationHost を選び、次に sites を選びます。

  4. siteDefaults をクリックします。

  5. サイトを選び、logFile を展開し、customFields を展開して、maxCustomFieldLength をクリックします。

  6. maxCustomFieldLength に、ログ ファイルのすべてのカスタム フィールドについて、1 フィールドに追加できるデータの最大量 (バイト) を入力します。

  7. コレクション エディターを閉じてから、[操作] ウィンドウで [適用] をクリックします。

    [ユーザー設定フィールド] ノードが展開され、[ユーザー設定フィールドの最大長] が選択されているログ ファイル ペインのスクリーンショット。

構成

既定の設定の <customFields> 要素はサーバー レベルで構成されます。

属性

属性 説明
maxCustomFieldLength 省略可能な uint 属性。

ログ ファイルのすべてのカスタム フィールドについて、1 フィールドに追加できるデータの最大量 (バイト)。

範囲は 2 から 65,536 です。 既定値は 4096 です。

子要素

要素 説明
add 省略可能な要素です。

W3C ログ内の既定のカスタム フィールドに関する構成設定を指定します。

構成サンプル

次の構成例では、customFields 要素とその add 子要素を使用して、W3C ログの既定のカスタム フィールド設定を指定しています。

<siteDefaults>
    <logFile logFormat="W3C" directory="%SystemDrive%\inetpub\logs\LogFiles" flushByEntryCountW3CLog="0">
        <customFields>
            <clear />
            <add logFieldName="ContosoField" sourceName="ContosoSource" sourceType="ServerVariable" />
        </customFields>
    </logFile>
</siteDefaults>

サンプル コード

次の例では、W3C ログの既定のカスタム フィールドを構成しています。

AppCmd.exe

appcmd.exe set config  -section:system.applicationHost/sites /+"siteDefaults.logFile.customFields.[logFieldName='ContosoField',sourceName='ContosoSource',sourceType='ServerVariable']" /commit:apphost

Note

AppCmd.exe を使用してこれらの設定を構成するときは、commit パラメーターを必ず apphost に設定する必要があります。 これで、ApplicationHost.config ファイルの適切な場所セクションに構成設定がコミットされます。

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 sitesSection = config.GetSection("system.applicationHost/sites");
            ConfigurationElement siteDefaultsElement = sitesSection.GetChildElement("siteDefaults");
            ConfigurationElement logFileElement = siteDefaultsElement.GetChildElement("logFile");
            ConfigurationElement customFieldsElement = logFileElement.GetChildElement("customFields");
            ConfigurationElementCollection customFieldsCollection = customFieldsElement.GetCollection();
            
            ConfigurationElement addElement = customFieldsCollection.CreateElement("add");
            addElement["logFieldName"] = @"ContosoField";
            addElement["sourceName"] = @"ContosoSource";
            addElement["sourceType"] = @"ServerVariable";
            customFieldsCollection.Add(addElement);
            
            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 sitesSection As ConfigurationSection =  config.GetSection("system.applicationHost/sites")
        Dim siteDefaultsElement As ConfigurationElement =  sitesSection.GetChildElement("siteDefaults")
        Dim logFileElement As ConfigurationElement =  siteDefaultsElement.GetChildElement("logFile")
        Dim customFieldsElement As ConfigurationElement =  logFileElement.GetChildElement("customFields")
        Dim customFieldsCollection As ConfigurationElementCollection =  customFieldsElement.GetCollection
        Dim addElement As ConfigurationElement =  customFieldsCollection.CreateElement("add")
        addElement("logFieldName") = "ContosoField"
        addElement("sourceName") = "ContosoSource"
        addElement("sourceType") = "ServerVariable"
        customFieldsCollection.Add(addElement)
        serverManager.CommitChanges
    End Sub
End Module

JavaScript

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

var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults");
var logFileElement = siteDefaultsElement.ChildElements.Item("logFile");
var customFieldsElement = logFileElement.ChildElements.Item("customFields");

var customFieldsCollection = customFieldsElement.Collection;

var addElement = customFieldsCollection.CreateNewElement("add");
addElement.Properties.Item("logFieldName").Value = "ContosoField";
addElement.Properties.Item("sourceName").Value = "ContosoSource";
addElement.Properties.Item("sourceType").Value = "ServerVariable";
customFieldsCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

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

Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults")
Set logFileElement = siteDefaultsElement.ChildElements.Item("logFile")
Set customFieldsElement = logFileElement.ChildElements.Item("customFields")

Set customFieldsCollection = customFieldsElement.Collection

Set addElement = customFieldsCollection.CreateNewElement("add")
addElement.Properties.Item("logFieldName").Value = "ContosoField"
addElement.Properties.Item("sourceName").Value = "ContosoSource"
addElement.Properties.Item("sourceType").Value = "ServerVariable"
customFieldsCollection.AddElement(addElement)

adminManager.CommitChanges()

PowerShell

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST'  -filter "system.applicationHost/sites/siteDefaults/logFile/customFields" -name "." -value @{logFieldName='ContosoField';sourceName='ContosoSource';sourceType='ServerVariable'}