Поделиться через


Настраиваемые поля по умолчанию в файлах <журнала 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 и более поздних версий по умолчанию.

Инструкции

Добавление настраиваемых полей по умолчанию

  1. Откройте диспетчер служб IIS.

    • Если вы используете Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, инструменты, а затем диспетчер служб IIS.
    • Если вы используете Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните диспетчер служб IIS.
  2. В области Подключения выберите сервер.

  3. Дважды щелкните ведение журнала в разделе IIS .

  4. На домашней странице Ведение журнала для параметра Формат выберите W3C.

  5. Щелкните Выбрать поля.

  6. В диалоговом окне Поля ведения журнала W3C нажмите кнопку Добавить поле.

  7. В диалоговом окне Добавление настраиваемого поля введите имя в поле Имя поля (без пробелов) и выберите одно из следующих значений в поле Тип источника: Заголовок запроса, Заголовок ответа или Переменная сервера.

  8. В поле Источник выберите источник из списка или введите имя настраиваемого источника.

  9. Нажмите кнопку ОК, а затем еще раз нажмите кнопку ОК .

  10. В области Действие нажмите кнопку Применить.

    Снимок экрана: диалоговое окно

Настройка максимальной длины настраиваемого поля по умолчанию

  1. Откройте диспетчер служб IIS.

    • Если вы используете Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, инструменты, а затем диспетчер служб IIS.
    • Если вы используете Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните диспетчер служб IIS.
  2. В области Подключения выберите сервер, а затем в области Управление дважды щелкните редактор конфигурации.

  3. В редакторе конфигураций в разделе выберите system.applicationHost, а затем — сайты.

  4. Щелкните siteDefaults (Веб-сайт).

  5. Выберите сайт, разверните logFile, customFields и щелкните maxCustomFieldLength.

  6. Для параметра maxCustomFieldLength введите максимальный объем данных, которые можно добавить в файл журнала в любом настраиваемом поле в байтах.

  7. Закройте редактор коллекций, а затем в области Действие нажмите кнопку Применить.

    Снимок экрана: область

Конфигурация

Элемент <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'}