Настраиваемые поля по умолчанию в файлах <журнала customFields>
Общие сведения
Элемент <customFields>
<logFile>
элемента задает параметры конфигурации для коллекции настраиваемых полей по умолчанию в журнале W3C.
IIS 8.5 позволяет регистрировать настраиваемые поля в дополнение к стандартному набору записей. Эти настраиваемые поля могут включать данные из заголовков запросов, заголовков ответов или переменных сервера. Чтобы регистрировать эти поля, можно просто задать свойства конфигурации, а не создавать пользовательский модуль ведения журнала. Эта функция доступна только на уровне сайта. Для добавления настраиваемых полей файл журнала должен иметь формат W3C.
При добавлении настраиваемого поля в стандартный набор к имени файла добавляется слово "_x", чтобы показать, что файл журнала содержит настраиваемое поле. Общий объем данных, добавленных в настраиваемые поля, не может превышать 65 536 байт. СЛУЖБЫ IIS усекает данные, если пользовательские зарегистрированные данные превышают этот объем. Максимальный объем данных, которые можно добавить в файл журнала в любом настраиваемом поле, определяется атрибутом maxCustomFieldLength.
Чтобы настроить настраиваемое поле, укажите имя поля, имя источника и тип источника. Вы можете поместить пользовательские сведения в переменную сервера и занести ее в журнал. Выбрав тип источника, можно выбрать существующее имя источника или ввести новое имя источника.
Настраиваемые поля позволяют собирать полезные данные о процессе и агрегировать их в журналах IIS. В системе, содержащей подсистему балансировки нагрузки, вы можете увидеть IP-адрес подсистемы балансировки нагрузки в журнале, но заголовок X-Forwarded-For можно записать в настраиваемое поле, чтобы узнать исходного инициатора запроса. Вы можете зарегистрироваться в журнале времени доступности процесса, чтобы узнать, сколько раз процесс перезапускается в течение дня. Если память начинает использоваться чрезмерно, вы можете определить, в какое время она начала потреблять память, какая страница была запрошена и какой идентификатор клиента (что было бы особенно полезно, если бы он выполнял вредоносные действия).
Совместимость
Версия | Примечания |
---|---|
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 нажмите кнопку Добавить поле.
В диалоговом окне Добавление настраиваемого поля введите имя в поле Имя поля (без пробелов) и выберите одно из следующих значений в поле Тип источника: Заголовок запроса, Заголовок ответа или Переменная сервера.
В поле Источник выберите источник из списка или введите имя настраиваемого источника.
Нажмите кнопку ОК, а затем еще раз нажмите кнопку ОК .
В области Действие нажмите кнопку Применить.
Настройка максимальной длины настраиваемого поля по умолчанию
Откройте диспетчер служб IIS.
Если вы используете Windows Server 2012 R2:
- На панели задач щелкните диспетчер сервера, инструменты, а затем диспетчер служб IIS.
Если вы используете Windows 8.1:
- Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
- Щелкните Администрирование, а затем дважды щелкните диспетчер служб IIS.
В области Подключения выберите сервер, а затем в области Управление дважды щелкните редактор конфигурации.
В редакторе конфигураций в разделе выберите system.applicationHost, а затем — сайты.
Щелкните siteDefaults (Веб-сайт).
Выберите сайт, разверните logFile, customFields и щелкните maxCustomFieldLength.
Для параметра maxCustomFieldLength введите максимальный объем данных, которые можно добавить в файл журнала в любом настраиваемом поле в байтах.
Закройте редактор коллекций, а затем в области Действие нажмите кнопку Применить.
Конфигурация
Элемент <customFields>
для параметров по умолчанию настраивается на уровне сервера.
Атрибуты
Атрибут | Описание |
---|---|
maxCustomFieldLength |
Необязательный атрибут uint. Максимальный объем данных в байтах, которые можно добавить в файл журнала в любом настраиваемом поле. Диапазон от 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
Примечание
При использовании AppCmd.exe для настройки этих параметров для параметра 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'}