Compartir a través de


Adición de campos personalizados predeterminados a un archivo de registro <add>

Información general

El elemento <add> del elemento <customFields> especifica los valores de configuración para agregar campos personalizados predeterminados en un registro W3C.

IIS 8.5 le permite registrar campos personalizados además del conjunto de registros estándar. Estos campos personalizados pueden incluir datos de encabezados de solicitud, encabezados de respuesta o variables de servidor. Para registrar estos campos, simplemente puede establecer propiedades de configuración en lugar de crear un módulo de registro personalizado. Esta característica solo está disponible en el nivel de sitio. El formato del archivo de registro debe ser W3C para agregar campos personalizados.

Cuando se ha agregado un campo personalizado al conjunto estándar, se anexará "_x" al nombre de archivo para mostrar que el archivo de registro contiene un campo personalizado. La cantidad total de datos agregados en campos personalizados no puede superar los 65 536 bytes. IIS truncará los datos si los datos registrados personalizados superan esa cantidad. El atributo maxCustomFieldLength especifica la cantidad máxima de datos que se pueden agregar a un archivo de registro en cualquier campo personalizado.

Para configurar un campo personalizado, especifique el nombre del campo, el nombre de origen y el tipo de origen. Puede colocar información personalizada en una variable de servidor y registrarla. Una vez que haya seleccionado el tipo de origen, puede seleccionar un nombre de origen existente o escribir un nombre de origen nuevo.

Los campos personalizados permiten recopilar datos útiles sobre el proceso y agregarlos a los registros de IIS. En un sistema que contiene un equilibrador de carga, es posible que vea la dirección IP del equilibrador de carga en el registro, pero podría registrar el encabezado X-Forwarded-For en un campo personalizado, para conocer el solicitante original. Puede registrar el tiempo de actividad del proceso para ver cuántas veces se ha reiniciado el proceso durante el día. Si la memoria comienza a usarse en exceso, puede determinar en qué momento ha comenzado a consumir memoria, qué página se ha solicitado y cuál ha sido el id. de cliente (lo que sería especialmente útil si hiciera algo malintencionado).

Compatibilidad

Versión Notas
IIS 10.0 El elemento <add> no se modificó en IIS 10.0.
IIS 8.5 El elemento <add> se introdujo en IIS 8.5.
IIS 8.0 N/D
IIS 7.5 N/D
IIS 7.0 N/D
IIS 6,0 N/D

Configuración

El elemento <add> se incluye en la instalación predeterminada de IIS 8.5.

Procedimientos

Adición de campos personalizados predeterminados

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, seleccione el servidor.

  3. Haga doble clic en Registro en la sección de IIS.

  4. En la página principal Registro, en Formato, seleccione W3C.

  5. Haga clic en Seleccionar campos.

  6. En el cuadro de diálogo Campos de registro de W3C, haga clic en Agregar campo.

  7. En el cuadro de diálogo Agregar campo personalizado, escriba un nombre en Nombre de campo (sin espacios) y seleccione una de las opciones siguientes para Tipo de origen: Encabezado de solicitud, Encabezado de respuesta o Variable de servidor.

  8. En Origen, seleccione un origen de la lista o escriba el nombre de un origen personalizado.

  9. Haga clic en Aceptar y después otra vez en Aceptar.

  10. En el panel Acción, haga clic en Aplicar.

    Screenshot of the Add Custom Field dialog with the default options.

Procedimiento para configurar la longitud máxima del campo personalizado predeterminada

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, seleccione el servidor y, después, en el área Administración, haga doble clic en Editor de configuración.

  3. En el Editor de configuración, en sección, seleccione system.applicationHost y, después, seleccione sites.

  4. Haga clic en siteDefaults.

  5. Seleccione el sitio, expanda logFile, expanda customFields y, después, haga clic en maxCustomFieldLength.

  6. En maxCustomFieldLength, escriba la cantidad máxima de datos que se pueden agregar a un archivo de registro en cualquier campo personalizado, en bytes.

  7. Cierre el Editor de recopilación y, después, en el panel Acción, haga clic en Aplicar.

    Screenshot of the custom Fields section of the log File Properties. Max Custom Field Length is set to 4095.

Configuración

El elemento <add> se configura en el nivel de servidor.

Atributos

Atributo Descripción
logFieldName Atributo de cadena necesario.

Especifica el campo personalizado predeterminado que se va a agregar al archivo de registro. El nombre de campo no puede contener espacios.
sourceName Atributo de cadena necesario.

Especifica el nombre del encabezado HTTP o la variable de servidor que contiene valores que se van a agregar a un campo personalizado predeterminado del registro. El nombre puede ser una cadena de origen personalizada.
sourceType Atributo enum obligatorio.

Tipo de origen de los datos que se van a agregar a un campo personalizado predeterminado en el registro. Puede ser RequestHeader (valor = 0), ResponseHeader (valor = 1) o ServerVariable (valor = 2).

Elementos secundarios

Ninguno.

Ejemplo de configuración

En el ejemplo de configuración siguiente se usa el elemento customFields y su elemento secundario add para especificar la conjunto predeterminada del campo personalizado para los registros W3C.

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

Código de ejemplo

En los ejemplos siguientes se configuran campos personalizados predeterminados para un registro W3C.

AppCmd.exe

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

Nota:

Debe asegurarse de establecer el parámetrocommit en apphost cuando use AppCmd.exe para configurar estos valores. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo 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'}