Campos personalizados predeterminados en archivos de registro <customFields>
Información general
El elemento <customFields>
del elemento <logFile>
especifica los valores de configuración de una colección de 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 <customFields> no se modificó en IIS 10.0. |
IIS 8.5 | El elemento <customFields> 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 <customFields>
se incluye en la instalación predeterminada de IIS 8.5 y versiones posteriores.
Procedimientos
Adición de campos personalizados predeterminados
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).
En el panel Conexiones, seleccione el servidor.
Haga doble clic en Registro en la sección de IIS.
En la página principal Registro, en Formato, seleccione W3C.
Haga clic en Seleccionar campos.
En el cuadro de diálogo Campos de registro de W3C, haga clic en Agregar campo.
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.
En Origen, seleccione un origen de la lista o escriba el nombre de un origen personalizado.
Haga clic en Aceptar y después otra vez en Aceptar.
En el panel Acción, haga clic en Aplicar.
Procedimiento para configurar la longitud máxima del campo personalizado predeterminada
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).
En el panel Conexiones, seleccione el servidor y, después, en el área Administración, haga doble clic en Editor de configuración.
En el Editor de configuración, en sección, seleccione system.applicationHost y, después, seleccione sites.
Haga clic en siteDefaults.
Seleccione el sitio, expanda logFile, expanda customFields y, después, haga clic en maxCustomFieldLength.
En maxCustomFieldLength, escriba la cantidad máxima de datos que se pueden agregar a un archivo de registro en cualquier campo personalizado, en bytes.
Cierre el Editor de recopilación y, después, en el panel Acción, haga clic en Aplicar.
Configuración
El elemento <customFields>
para la configuración predeterminada se configura en el nivel de servidor.
Atributos
Atributo | Descripción |
---|---|
maxCustomFieldLength |
Atributo uint opcional. Cantidad máxima de datos, en bytes, que se pueden agregar a un archivo de registro en cualquier campo personalizado. El intervalo es de 2 a 65 536. El valor predeterminado es 4096 . |
Elementos secundarios
Elemento | Descripción |
---|---|
add |
Elemento opcional. Especifica los valores de configuración para campos personalizados predeterminados en un registro W3C. |
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'}