ログ ファイルの既定のカスタム フィールド <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 以降の既定のインストールに含まれています。
操作方法
既定のカスタム フィールドを追加する方法
インターネット インフォメーション サービス (IIS) マネージャーを開きます。
Windows Server 2012 R2 を使用している場合:
- タスク バーで、[サーバー マネージャー] をクリックし、[ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows 8.1 を使用している場合:
- Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
- [管理ツール] をクリックし、次に [インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
[接続] ペインでサーバーを選びます。
[IIS] セクションの [ログ記録] をダブルクリックします。
[ログ記録] ホーム ページの [形式] で、[W3C] を選びます。
[フィールドの選択] をクリックします。
[W3C ログ記録フィールド] ダイアログ ボックスで、[フィールドの追加] をクリックします。
[カスタム フィールドの追加] ダイアログ ボックスで、[フィールド名] に名前 (スペースなし) を入力し、[ソースの種類] で [要求ヘッダー]、[応答ヘッダー]、または [サーバー変数] のいずれかを選びます。
[ソース] で、一覧からソースを選ぶか、カスタム ソースの名前を入力します。
[OK] をクリックしてから、もう一度 [OK] をクリックします。
[操作] ペインで [適用] をクリックします。
カスタム フィールドの既定の最大長を構成する方法
インターネット インフォメーション サービス (IIS) マネージャーを開きます。
Windows Server 2012 R2 を使用している場合:
- タスク バーで、[サーバー マネージャー] をクリックし、[ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows 8.1 を使用している場合:
- Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
- [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
[接続] ウィンドウでサーバーを選択してから、[管理] 領域の [構成エディター] をダブルクリックします。
構成エディターで、[セクション] として system.applicationHost を選び、次に sites を選びます。
siteDefaults をクリックします。
サイトを選び、logFile を展開し、customFields を展開して、maxCustomFieldLength をクリックします。
maxCustomFieldLength に、ログ ファイルのすべてのカスタム フィールドについて、1 フィールドに追加できるデータの最大量 (バイト) を入力します。
コレクション エディターを閉じてから、[操作] ウィンドウで [適用] をクリックします。
構成
既定の設定の <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'}