Archivos de registro de un elemento <logFile> de sitio web
Información general
El elemento <logFile>
del elemento <site>
contiene atributos que permiten configurar el registro de un sitio en IIS 7 y versiones posteriores.
Por ejemplo, puede habilitar o deshabilitar el registro, configurar el formato del archivo de registro de IIS, especificar las categorías de información que se almacenarán en el archivo de registro y cambiar el directorio donde se almacena el archivo de registro. También puede usar el elemento <logFile>
para controlar la frecuencia con la que IIS crea un archivo de registro basado en el tamaño del archivo de registro o el intervalo de tiempo y el tamaño máximo (en bytes) que puede convertirse un archivo de registro.
De manera predeterminada, IIS 7 y versiones posteriores usan el formato de archivo de registro World Wide Web Consortium (W3C). Puede cambiar esta configuración cambiando el atributo logFormat a IIS, NCSA o Personalizado.
Nota:
El registro ODBC se implementa como un módulo de registro personalizado en IIS 7 y versiones posteriores. Por ello, habilitar y configurar el registro ODBC en IIS 7 y versiones posteriores consta de dos acciones independientes:
- Establecer los atributos de registro ODBC en el elemento
<odbcLogging>
. Estos atributos especifican el nombre de origen de datos del sistema (DSN), el nombre de tabla, el nombre de usuario y la contraseña para la conexión ODBC. - Establecer los atributos de registro personalizados correctos en el elemento
<logFile>
. Estos atributos deben establecer el formato de archivo de registro en "Custom" y el id. de clase de complemento de registro personalizado en "{FF16065B-DE82-11CF-BC0A-00AA006111E0}".
Para obtener más información sobre el registro ODBC, vea el elemento <odbcLogging>
.
Puede definir las categorías de información que registra IIS editando el atributo logExtFileFlags. Los valores predeterminados son Date
, Time
, ClientIP
, UserName
, ServerIP
, Method
, UriStem
, UriQuery
, TimeTaken
, HttpStatus
, Win32Status
, ServerPort
, UserAgent
, HttpSubStatus
y Referer
.
Nota:
Si el elemento <logFile>
está configurado en la sección <siteDefaults>
y en la sección <site>
de un sitio específico, la configuración de la sección <site>
se usa para ese sitio.
IIS 8.5 permite registrar campos personalizados además del conjunto de registros estándar. El formato del archivo de registro debe ser W3C para agregar campos personalizados. Para obtener más información, vea customFields
.
Compatibilidad
Versión | Notas |
---|---|
IIS 10.0 | El elemento <logFile> no se modificó en IIS 10.0. |
IIS 8.5 | Se ha agregado el atributo flushByEntryCountW3CLog para especificar el número de eventos que se van a almacenar en el búfer antes de vaciarlos en el archivo de registro. Se ha agregado el atributo logTargetW3C para especificar cómo se procesan los eventos IIS registrados. Se ha agregado el atributo maxLogLineLength para especificar la longitud máxima de una línea en un archivo de registro. Se ha agregado el elemento <customFields> secundario. |
IIS 8.0 | El atributo logSiteId se agregó para especificar el contenido del campo -sitename y la marca referer se agregó al valor predeterminado del atributo logExtFileFlags . |
IIS 7.5 | El elemento <logFile> no se modificó en IIS 7.5. |
IIS 7.0 | El elemento <logFile> del elemento <site> se introdujo en IIS 7.0. |
IIS 6,0 | El elemento <logFile> reemplaza las secciones de las propiedades de registro en el objeto de metabase IIsWebService de IIS 6.0. |
Configuración
El elemento <logFile>
se incluye en la instalación predeterminada de IIS 7.
Procedimientos
Procedimientos para editar la configuración de registro de un sitio
Abra el Administrador de Internet Information Services (IIS):
Si usa Windows Server 2012 o 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 o 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, después, haga doble clic en Administrador de Internet Information Services (IIS).
Si usa Windows Server 2008 o Windows Server 2008 R2:
- En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, después, haga clic en Administrador de Internet Information Services (IIS).
Si usa Windows Vista o Windows 7:
- En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
- Haga doble clic en Herramientas administrativas y, después, haga doble clic en Administrador de Internet Information Services (IIS).
En el panel Conexiones, expanda el nombre del servidor, luego la opción Sitios y, después, haga clic en el sitio web en el que quiera configurar el registro.
En el panel Inicio, haga doble clic en Registro.
En el panel Registro, seleccione el formato de archivo de registro en el cuadro Formato y escriba la ruta de acceso al directorio donde almacena los archivos de registro en el cuadro Directorio o bien haga clic en Examinar... para elegir el directorio en el que quiere almacenar los archivos de registro.
Si decide usar el formato de archivo de registro W3C:
- Haga clic en Seleccionar campos para elegir los tipos de información que se van a registrar.
- En el cuadro de diálogo Campos de registro de W3C, active las casillas de las opciones que quiere registrar, desactive las casillas de las opciones que no quiere registrar y, después, haga clic en Aceptar.
Procedimientos para configurar el registro de archivos o ETW para registros W3C
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, después, 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, después, haga doble clic en Administrador de Internet Information Services (IIS).
En el panel Conexiones, expanda el nombre del servidor, expanda Sitios y, después, seleccione un sitio.
En el panel Inicio del sitio, haga doble clic en Registro.
En la página principal de Registro, en Destino de eventos de registro, seleccione Solo archivo de registro, Solo evento ETW o Archivo de registro y evento ETW.
Procedimiento para configurar el vaciado de un registro W3C por recuento de entradas
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, después, 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, después, haga doble clic en Administrador de Internet Information Services (IIS).
En el panel Conexiones, expanda el servidor y, después, haga doble clic en Editor de configuración.
En el Editor de configuración, para la Sección, expanda
system.applicationHost
y, después, seleccione Sitios.Haga clic en (Colección) y, después, haga clic en los puntos suspensivos.
Seleccione el sitio que quiere configurar y, después, expanda logFile.
En flushByEntryCountW3Clog, escriba el número de eventos que se almacenarán en el búfer antes de vaciarlos en el archivo de registro.
En el panel Acción, haga clic en Aplicar.
Procedimiento para configurar la longitud máxima de la línea de registro
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, después, 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, después, haga doble clic en Administrador de Internet Information Services (IIS).
En el panel Conexiones, expanda el servidor y, después, haga doble clic en Editor de configuración.
En el Editor de configuración, para la Sección, expanda
system.applicationHost
y, después, seleccione Sitios.Haga clic en (Colección) y, después, haga clic en los puntos suspensivos.
Seleccione el sitio que quiere configurar y, después, expanda logFile.
En maxLogLineLength, escriba el número máximo de bytes en una sola línea de un archivo de registro.
En el panel Acción, haga clic en Aplicar.
Configuración
Atributos
Atributo | Descripción | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
customLogPluginClsid |
Atributo de cadena opcional. Especifica el id. de clase de objeto COM (CLSID) o los id., en orden de prioridad, de los módulos personalizados. |
||||||||||||||||||||||||||||||||||||||||||||||
directory |
Atributo de cadena opcional. Especifica el directorio de registro, donde se almacenan los archivos de soporte técnico relacionados con el registro y el archivo de registro. El valor predeterminado es %SystemDrive%\inetpub\logs\LogFiles . |
||||||||||||||||||||||||||||||||||||||||||||||
enabled |
Atributo Boolean opcional. Especifica si, para un sitio, el registro está habilitado (true) o deshabilitado (false). Nota: Los errores de ASP y ODBC no se registran en los archivos de registro de IIS. El valor predeterminado es true . |
||||||||||||||||||||||||||||||||||||||||||||||
flushByEntryCountW3CLog |
Atributo uint opcional. Especifica el número de eventos que se van a almacenar en el búfer antes de vaciarse en el archivo de registro. Un número menor hará que los eventos se vacíen más rápidamente, a costa del rendimiento, como resultado de un mayor número de operaciones de disco. Reduzca este valor para obtener una solución de problemas más en tiempo real; auméntelo para obtener rendimiento. Un valor de 0 especifica que el vaciado se producirá en el máximo predeterminado de 64 000.El valor predeterminado es 0 . |
||||||||||||||||||||||||||||||||||||||||||||||
localTimeRollover |
Atributo Boolean opcional. Especifica si se crea un archivo de registro en función de la hora local o de la hora universal coordinada (UTC), que anteriormente se llamaba Hora del meridiano de Greenwich (GMT). Cuando es false, se crea un archivo de registro basado en UTC. Nota: Independientemente de la configuración, la marca de tiempo de cada registro de registro extendido de W3C se basa en UTC. El valor predeterminado es false . |
||||||||||||||||||||||||||||||||||||||||||||||
logExtFileFlags |
Atributo flags opcional. Especifica las categorías de información escritas en el archivo de registro (cuando se usa el formato de archivo de registro extendido W3C) o en el origen de datos ODBC durante los eventos de registro de un sitio. El atributo logExtFileFlags puede ser uno o varios de los valores siguientes. Si especifica más de un valor, sepárelos con una coma (,). Los valores predeterminados son: Date , Time , ClientIP , UserName , ServerIP , Method , UriStem , UriQuery , TimeTaken , HttpStatus , Win32Status , ServerPort , UserAgent , HttpSubStatus , Referer .
|
||||||||||||||||||||||||||||||||||||||||||||||
logFormat |
Atributo enum opcional. Especifica el formato del archivo de registro. El atributo logFormat puede ser uno de los siguientes valores. El valor predeterminado es W3C .
|
||||||||||||||||||||||||||||||||||||||||||||||
logSiteId |
Atributo Boolean opcional. Especifica que el campo s-sitename contendrá el nombre del sitio (false) o el id. de sitio (true). Si el campo Un archivo de registro por propiedad se establece en Site (el valor predeterminado listo para usar), no obtendrá la columna s-sitename en el archivo de registro de manera predeterminada, ya que la propiedad de nombre del archivo de registro contendrá el id. de sitio en su lugar. Si el campo Un archivo de registro por propiedad se establece en Server , la columna s-sitename se incluirá en el archivo de registro de manera predeterminada.El valor predeterminado es True , lo que significa que el campo s-sitename contiene el id. de sitio. Para registrar el nombre del sitio en su lugar, establezca logSiteID en False . |
||||||||||||||||||||||||||||||||||||||||||||||
logTargetW3C |
Atributo Flags opcional. Especifica si IIS usará el seguimiento de eventos para Windows (ETW) o el registro de archivos a fin de procesar eventos de IIS registrados. ETW proporciona registro y uso en tiempo real de un proveedor ETW y mecanismos de consulta estándar. El registro de archivos almacena datos de eventos en archivos de texto que puede analizar para acceder a los datos de registro. Cuando IIS usa archivos de registro, HTTP.sys registra los datos directamente en archivos de registro de texto una vez completada la transacción. Al usar ETW, HTTP.sys envía datos a ETW mediante el proveedor de iislogging y el servicio LOGSVC administra los datos de registro, incluida la consulta de ETW para los datos, la recopilación de datos directamente de los procesos de trabajo y el envío de los datos a un archivo de registro. El atributo logTargetW3C puede tener los siguientes valores posibles. El valor predeterminado es File . Si File y ETW aparecen en logTargetW3C para el sitio en applicationHost.config, equivale a seleccionar Registro de archivo y evento ETW para la configuración del archivo de registro del sitio en el panel Registro del Administrador de IIS.
|
||||||||||||||||||||||||||||||||||||||||||||||
maxLogLineLength |
Atributo uint opcional. Especifica la longitud máxima de una línea en un archivo de registro. Esto le permite limitar la cantidad de datos acumulados mediante el registro y ahorrar espacio en disco, especialmente cuando se agregan campos de registro personalizados. El intervalo es de 2 a 65 536. El valor predeterminado es 65536 . |
||||||||||||||||||||||||||||||||||||||||||||||
period |
Atributo enum opcional. Especifica la frecuencia con la que IIS crea un archivo de registro. El atributo period puede ser uno de los siguientes valores posibles. El valor predeterminado es Daily .
|
||||||||||||||||||||||||||||||||||||||||||||||
truncateSize |
Atributo int64 opcional. Especifica el tamaño máximo del archivo de registro (en bytes) después del cual se va a crear un nuevo archivo de registro. Este valor solo es aplicable cuando se elige MaxSize para el atributo period. El tamaño mínimo de archivo es 1 048 576 bytes. Si este atributo se establece en un valor inferior a 1 048 576 bytes, se supone de forma implícita que el valor predeterminado es 1 048 576 bytes. El valor predeterminado es 20971520 . |
Elementos secundarios
Elemento | Descripción |
---|---|
customFields |
Elemento opcional. Especifica los valores de configuración de una colección de campos personalizados en un registro W3C. |
Ejemplo de configuración
En el ejemplo de configuración siguiente se usa el atributo logExtFileFlags del elemento <logFile>
a fin de especificar la configuración que IIS registra para un sitio web denominado Contoso. El atributo period hace que IIS cree un archivo de registro W3C cada hora; el atributo localTimeRollover especifica que IIS usa la hora en el servidor local para determinar cuándo crear y asignar un nombre a un nuevo archivo de registro.
<site name="Contoso" id="2" serverAutoStart="true">
<application path="/" applicationPool="Contoso">
<virtualDirectory path="/" physicalPath="C:\Contoso\Content" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:www.contoso.com" />
</bindings>
<logFile
period="Hourly"
localTimeRollover="true"
logExtFileFlags="Date, Time, ClientIP, UserName, ServerIP, Method, UriStem, UriQuery, HttpStatus, TimeTaken, ServerPort, UserAgent, HttpSubStatus" />
</site>
Código de ejemplo
En los ejemplos siguientes se configura el registro de un sitio denominado Contoso. Cada ejemplo habilita el registro para el sitio y configura el registro de sitio a fin de generar un nuevo archivo de registro diariamente. También configuran IIS para usar la hora en el servidor local a fin de generar los nombres de archivo de registro y determinar cuándo generar nuevos archivos de registro.
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/sites /[name='Contoso'].logFile.logFormat:"W3C"
appcmd.exe set config -section:system.applicationHost/sites /[name='Contoso'].logFile.period:"Daily"
appcmd.exe set config -section:system.applicationHost/sites /[name='Contoso'].logFile.localTimeRollover:"True"
appcmd.exe set config -section:system.applicationHost/sites /[name='Contoso'].logFile.enabled:"True" /commit:apphost
Nota:
Debe asegurarse de establecer el parámetro de confirmación en apphost
cuando use AppCmd.exe para configurar estas opciones. 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");
ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();
ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", @"Contoso");
if (siteElement == null) throw new InvalidOperationException("Element not found!");
ConfigurationElement logFileElement = siteElement.GetChildElement("logFile");
logFileElement["logFormat"] = @"W3C";
logFileElement["period"] = @"Daily";
logFileElement["localTimeRollover"] = true;
logFileElement["enabled"] = true;
serverManager.CommitChanges();
}
}
private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
{
foreach (ConfigurationElement element in collection)
{
if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
{
bool matches = true;
for (int i = 0; i < keyValues.Length; i += 2)
{
object o = element.GetAttributeValue(keyValues[i]);
string value = null;
if (o != null)
{
value = o.ToString();
}
if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
{
matches = false;
break;
}
}
if (matches)
{
return element;
}
}
}
return null;
}
}
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 sitesCollection As ConfigurationElementCollection = sitesSection.GetCollection
Dim siteElement As ConfigurationElement = FindElement(sitesCollection, "site", "name", "Contoso")
If (siteElement Is Nothing) Then
Throw New InvalidOperationException("Element not found!")
End If
Dim logFileElement As ConfigurationElement = siteElement.GetChildElement("logFile")
logFileElement("logFormat") = "W3C"
logFileElement("period") = "Daily"
logFileElement("localTimeRollover") = True
logFileElement("enabled") = True
serverManager.CommitChanges()
End Sub
Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
For Each element As ConfigurationElement In collection
If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
Dim matches As Boolean = True
Dim i As Integer
For i = 0 To keyValues.Length - 1 Step 2
Dim o As Object = element.GetAttributeValue(keyValues(i))
Dim value As String = Nothing
If (Not (o) Is Nothing) Then
value = o.ToString
End If
If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
matches = False
Exit For
End If
Next
If matches Then
Return element
End If
End If
Next
Return Nothing
End Function
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 sitesCollection = sitesSection.Collection;
var siteElementPos = FindElement(sitesCollection, "site", ["name", "Contoso"]);
if (siteElementPos == -1) throw "Element not found!";
var siteElement = sitesCollection.Item(siteElementPos);
var logFileElement = siteElement.ChildElements.Item("logFile");
logFileElement.Properties.Item("logFormat").Value = "W3C";
logFileElement.Properties.Item("period").Value = "Daily";
logFileElement.Properties.Item("localTimeRollover").Value = true;
logFileElement.Properties.Item("enabled").Value = true;
adminManager.CommitChanges();
function FindElement(collection, elementTagName, valuesToMatch) {
for (var i = 0; i < collection.Count; i++) {
var element = collection.Item(i);
if (element.Name == elementTagName) {
var matches = true;
for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
var property = element.GetPropertyByName(valuesToMatch[iVal]);
var value = property.Value;
if (value != null) {
value = value.toString();
}
if (value != valuesToMatch[iVal + 1]) {
matches = false;
break;
}
}
if (matches) {
return i;
}
}
}
return -1;
}
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set sitesCollection = sitesSection.Collection
siteElementPos = FindElement(sitesCollection, "site", Array("name", "Contoso"))
If siteElementPos = -1 Then
WScript.Echo "Element not found!"
WScript.Quit
End If
Set siteElement = sitesCollection.Item(siteElementPos)
Set logFileElement = siteElement.ChildElements.Item("logFile")
logFileElement.Properties.Item("logFormat").Value = "W3C"
logFileElement.Properties.Item("period").Value = "Daily"
logFileElement.Properties.Item("localTimeRollover").Value = True
logFileElement.Properties.Item("enabled").Value = True
adminManager.CommitChanges()
Function FindElement(collection, elementTagName, valuesToMatch)
For i = 0 To CInt(collection.Count) - 1
Set element = collection.Item(i)
If element.Name = elementTagName Then
matches = True
For iVal = 0 To UBound(valuesToMatch) Step 2
Set property = element.GetPropertyByName(valuesToMatch(iVal))
value = property.Value
If Not IsNull(value) Then
value = CStr(value)
End If
If Not value = CStr(valuesToMatch(iVal + 1)) Then
matches = False
Exit For
End If
Next
If matches Then
Exit For
End If
End If
Next
If matches Then
FindElement = i
Else
FindElement = -1
End If
End Function