Archivos de registro de un archivo de registro de sitio <web>

Información general

El <logFile> elemento del <site> elemento 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 <logFile> elemento para controlar la frecuencia con la que IIS crea un nuevo archivo de registro basado en el tamaño del archivo de registro o en el intervalo de tiempo y el tamaño máximo (en bytes) que puede convertirse un archivo de registro.

De forma predeterminada, IIS 7 y versiones posteriores usan el formato de archivo de registro World Wide Web Consortium (W3C). Puede cambiar esta configuración modificando el atributo logFormat en IIS, NCSA o Custom.

Nota

El registro ODBC se implementa como un módulo de registro personalizado en IIS 7 y versiones posteriores. Como resultado, 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 <odbcLogging> elemento . Estos atributos especifican el nombre del origen de datos del sistema (DSN), el nombre de tabla, el nombre de usuario y la contraseña de la conexión ODBC.
  • Establecer los atributos de registro personalizados correctos en el <logFile> elemento . Estos atributos deben establecer el formato de archivo de registro en "Custom" y el identificador 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 <odbcLogging> elemento .

Puede definir las categorías de información que registra IIS editando el atributo logExtFileFlags . Los valores predeterminados son , , , , MethodUserNameServerPortWin32StatusUserAgentUriQueryHttpStatusHttpSubStatusTimeTakenServerIPUriStemy .RefererClientIPTimeDate

Nota

Si el <logFile> elemento se configura en la <siteDefaults> sección y en la <site> sección de un sitio específico, la configuración de la <site> sección 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 <logFile> elemento no se modificó en IIS 10.0.
IIS 8,5 Se agregó el flushByEntryCountW3CLog atributo para especificar el número de eventos que se almacenarán en el búfer antes de vaciarse en el archivo de registro. Se ha agregado el logTargetW3C atributo para especificar cómo se procesan los eventos IIS registrados. Se agregó el maxLogLineLength atributo para especificar la longitud máxima de una línea en un archivo de registro. Se agregó el <customFields> elemento secundario.
IIS 8,0 El logSiteId atributo se agregó para especificar el contenido del campo -sitename y referer la marca se agregó al valor predeterminado del logExtFileFlags atributo.
IIS 7,5 El <logFile> elemento no se modificó en IIS 7.5.
IIS 7.0 El <logFile> elemento del <site> elemento se introdujo en IIS 7.0.
IIS 6,0 El <logFile> elemento reemplaza las secciones de las propiedades de registro en el objeto de metabase IIS 6.0 IIsWebService .

Configurar

El <logFile> elemento se incluye en la instalación predeterminada de IIS 7 y versiones posteriores.

Procedimientos

Cómo editar la configuración de registro de un sitio

  1. 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, a continuación, haga clic en Panel de control.
      • Haga clic en Herramientas administrativas y, a continuación, 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 administrativasy, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicioy, a continuación, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones , expanda el nombre del servidor, expanda Sitios y, a continuación, haga clic en el sitio web en el que desea configurar el registro.

  3. En el panel Inicio , haga doble clic en Registro.
    Captura de pantalla de la página principal del sitio web predeterminado. El icono de Registro está resaltado.

  4. En el panel Registro , seleccione el formato del archivo de registro en el cuadro Formato y, a continuación, escriba la ruta de acceso al directorio donde almacena los archivos de registro en el cuadro Directorio o haga clic en Examinar... para elegir el directorio en el que almacenar los archivos de registro.
    Captura de pantalla de la página Registro en I I S Manager.

  5. Si decide usar el formato de archivo de registro W3C:

    • Haga clic en Seleccionar campos para elegir los tipos de información que desea registrar.
    • En el cuadro de diálogo Campos de registro de W3C , active las casillas de las opciones que desea registrar, desactive las casillas de las opciones que no desea registrar y, a continuación, haga clic en Aceptar.
      Captura de pantalla del cuadro de diálogo Campos de registro de W 3 C.

Configuración del registro de archivos o ETW para los registros de W3C

  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, a continuación, haga clic 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 , expanda el nombre del servidor, expanda Sitios y, a continuación, seleccione un sitio.

  3. En el panel principal del sitio, haga doble clic en Registro.

  4. En la página principal registro , en Destino de eventos de registro, seleccione Solo archivo de registro, Solo evento ETW o Archivo de registro y Evento ETW.

    Captura de pantalla de la ventana I I S Manager que muestra la página Registro.

Cómo configurar el vaciado de un registro W3C por recuento de entradas

  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, a continuación, haga clic 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 , expanda el servidor y, a continuación, haga doble clic en Editor de configuración.

  3. En el Editor de configuración, en sección, expanda system.applicationHosty, a continuación, seleccione sitios.

  4. Haga clic en (Colección) y, a continuación, haga clic en los puntos suspensivos.

  5. Seleccione el sitio que desea configurar y, a continuación, expanda logFile.

  6. En flushByEntryCountW3Clog, escriba el número de eventos que se almacenarán en el búfer antes de vaciarse en el archivo de registro.

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

    Captura de pantalla de la ventana Editor de colecciones. Flush By Entry Count W 3 C Log (Vaciar por recuento de entradas W 3 C) está resaltado en el campo Propiedades.

Configuración de la longitud máxima de la línea de registro

  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, a continuación, haga clic 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 , expanda el servidor y, a continuación, haga doble clic en Editor de configuración.

  3. En el Editor de configuración, en sección, expanda system.applicationHosty, a continuación, seleccione sitios.

  4. Haga clic en (Colección) y, a continuación, haga clic en los puntos suspensivos.

  5. Seleccione el sitio que desea configurar y, a continuación, expanda logFile.

  6. En maxLogLineLength, escriba el número máximo de bytes en una sola línea de un archivo de registro.

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

    Captura de pantalla de la ventana Editor de recopilación. La longitud máxima de la línea de registro está resaltada en el campo Propiedades.

Configuración

Atributos

Atributo Descripción
customLogPluginClsid Atributo de cadena opcional.

Especifica el identificador de clase de objeto COM (CLSID) o los identificadores, en orden de precedencia, para 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 el registro está habilitado (true) o deshabilitado (false) para un sitio.

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 almacenarán en el búfer antes de vaciarse en el archivo de registro. Un número menor hará que los eventos se vacíe más rápidamente, a costa del rendimiento como resultado de un mayor número de operaciones de disco. Reduzca este valor para solucionar problemas más en tiempo real y aumente el rendimiento. Un valor de 0 especifica que el vaciado se producirá en el máximo predeterminado de 64 k.

El valor predeterminado es 0.
localTimeRollover Atributo Boolean opcional.

Especifica si se crea un nuevo archivo de registro en función de la hora local o la hora universal coordinada (UTC), que anteriormente se llamaba Hora media de Greenwich (GMT). Cuando es false, se crea un nuevo 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 que se escriben en el archivo de registro (cuando se usa el formato de archivo de registro extendido de 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, separe con una coma (,).

Los valores predeterminados son , , , , MethodUserNameHttpSubStatusHttpStatusUriStemRefererUserAgentServerPortWin32StatusTimeTakenServerIPUriQuery. ClientIPTimeDate
Value Descripción
BytesRecv Registre el número de bytes recibidos por el servidor.
BytesSent Registre el número de bytes que envió el servidor.
ClientIP Registre la dirección IP del cliente que realizó la solicitud.
ComputerName Registre el nombre del servidor en el que se generó la entrada del archivo de registro.
Cookie Registre el contenido de las cookies recibidas, si existe algún contenido.
Date Registre la fecha en la que se produjo la actividad.
Host Registre el nombre del encabezado de host, si hay uno.
HttpStatus Registre el código de estado HTTP.
HttpSubStatus Registre el código de subestado del error HTTP. Por ejemplo, para el error HTTP 500.18, el código de estado es 500 y el código de subestado es 18.
Method Registre la acción solicitada. Por ejemplo, GET, POST, etc.
ProtocolVersion Registre la versión del protocolo que usó el cliente.
Referer Registre el sitio que el usuario visitó por última vez. Este sitio proporciona un vínculo al sitio actual.
ServerIP Registre la dirección IP del servidor en el que se generó la entrada del archivo de registro.
ServerPort Registre el número de puerto del servidor que está configurado para el sitio.
SiteName Registre el nombre del servicio de Internet y el número de instancia del sitio.
Time Registre la hora en hora universal coordinada (UTC), a la que se produjo la actividad.
TimeTaken Registre el período de tiempo necesario para completar una solicitud. El tiempo necesario se registra en milisegundos.

Nota: La marca de tiempo de solicitud de cliente se inicializa cuando HTTP.sys recibe el primer byte, pero antes de que HTTP.sys comience a analizar la solicitud. La marca de tiempo de solicitud de cliente se detiene cuando se produce la última finalización del envío de IIS. El tiempo necesario no refleja el tiempo a través de la red. La primera solicitud al sitio muestra un tiempo ligeramente más largo que otras solicitudes similares porque HTTP.sys abre el archivo de registro que contiene la primera solicitud.
UriQuery Registre la consulta, si existe, que el cliente estaba intentando realizar. Una consulta de identificador de recursos universales (URI) solo es necesaria para páginas dinámicas y normalmente consta de parámetros pasados a la dirección URL.
UriStem Registre la información principal del identificador de recursos universal (URI), que es el destino de la acción. Por ejemplo, Default.htm.
UserAgent Registre el tipo de explorador que usó el cliente.
UserName Registre el nombre del usuario autenticado que ha accedido al servidor. Los usuarios anónimos se indican con un guion.
Win32Status Registre el código de estado de Windows.
logFormat Atributo de enumeración opcional.

Especifica el formato del archivo de registro. El atributo logFormat puede ser uno de los valores siguientes.

El valor predeterminado es W3C.
Value Descripción
Custom Use un formato de archivo de registro personalizado para un módulo de registro personalizado.

El valor numérico es 3.
IIS Use el formato de archivo de registro de Microsoft IIS para registrar información sobre un sitio. HTTP.sys, administra este formato y es un formato basado en texto ASCII fijo, lo que significa que no puede personalizar los campos que se registran. Los campos están separados por comas y la hora se registra en hora local. La lista siguiente es una lista de campos que se registran cuando se usa el formato de archivo de registro de IIS:
  • Dirección IP del cliente
  • Nombre de usuario
  • Fecha
  • Hora
  • Servicio e instancia
  • Nombre del servidor
  • Dirección IP del servidor
  • Tiempo necesario
  • Bytes de cliente enviados
  • Bytes de servidor enviados
  • Service status code (un valor de 200 indica que la solicitud se ha satisfecho correctamente).
  • Windows status code (un valor de 0 indica que la solicitud se ha satisfecho correctamente).
  • Tipo de solicitud
  • Destino de la operación
  • Parámetros (los parámetros que se pasan a un script)
No todos los campos contendrán datos. Cuando un campo no contiene datos, aparece un guion (-) aparece como un marcador de posición. Cuando un campo contiene un carácter no imprimible, HTTP.sys lo reemplaza con un signo más (+) para conservar el formato de archivo de registro.

El valor numérico es 0.
NCSA Use el formato de archivo de registro común del Centro Nacional de Superequipos (NCSA) para registrar información sobre un sitio. HTTP.sys, administra este formato y es un formato basado en texto ASCII fijo, lo que significa que no puede personalizar los campos que se registran. Los campos están separados por espacios y la hora se registra en hora local con la hora universal coordinada (UTC) compensada. La lista siguiente es una lista de campos que se registran cuando se usa el formato de archivo de registro común de NCSA:
  • Dirección de host remota
  • Remote log name (este valor siempre es un guion).
  • Nombre de usuario
  • Desplazamiento de fecha, hora y UTC
  • Versión de solicitud y protocolo
  • Service status code (un valor de 200 indica que la solicitud se ha satisfecho correctamente).
  • Bytes enviados
No todos los campos contendrán datos. Cuando un campo no contiene datos, aparece un guion (-) aparece como un marcador de posición. Cuando un campo contiene un carácter no imprimible, HTTP.sys lo reemplaza con un signo más (+) para conservar el formato de archivo de registro.

El valor numérico es 1.
W3C Use el formato de archivo de registro extendido W3C para registrar información sobre un sitio. HTTP.sys administra este formato, que es un formato basado en texto ASCII personalizable, lo que significa que usted especifica los campos que se registran. Especifique los campos que se registran en el atributo logExtFileFlags . Los campos están separados por espacios y la hora se registra en hora universal coordinada (UTC).

El valor numérico es 2.
logSiteId Atributo Boolean opcional.

Especifica que el campo s-sitename contendrá el nombre del sitio (false) o el identificador de sitio (true). Si el archivo de registro único por propiedad se establece Site en (el valor predeterminado listo para usar), no obtendrá la columna s-sitename en el archivo de registro de forma predeterminada, ya que la propiedad de nombre del archivo de registro contendrá el identificador del sitio en su lugar. Si el archivo de registro por propiedad se establece Serveren , la columna -s-sitename se incluirá en el archivo de registro de forma predeterminada.

El valor predeterminado es True, lo que significa que el campo s-sitename contiene el identificador 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 para procesar eventos 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 logTargetW3C atributo puede tener los siguientes valores posibles. El valor predeterminado es File. Si y FileETW se enumeran para logTargetW3C el sitio en applicationHost.config, es equivalente a seleccionar Tanto el archivo de registro como el evento ETW para la configuración del archivo de registro del sitio en el panel Registro del Administrador de IIS.
Value Descripción
File Los datos de eventos de IIS se almacenarán en un archivo de registro de texto. Para procesar los datos del evento, debe analizar el archivo de registro basado en texto. Los archivos de registro de texto tardan tiempo en procesarse y vaciarse, por lo que no podrá procesar los datos del evento en tiempo real.

El valor numérico es 1.
ETW En lugar de registrar datos directamente en archivos de texto, IIS enviará información registrada a Seguimiento de eventos para Windows, un mecanismo de eventos genérico integrado en Windows. Puede administrar los datos registrados mediante herramientas de consulta estándar, como el Analizador de mensajes o herramientas personalizadas. ETW procesa la información registrada en tiempo real y le ofrece la capacidad de filtrar y ver los datos, y para habilitar o deshabilitar el registro de forma dinámica. ETW también agrega información detallada a los datos de eventos, lo que proporciona datos a los que HTTP.sys no tiene acceso. Para obtener más información, consulte Seguimiento de eventos.

El valor numérico es 2.
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 de enumeración opcional.

Especifica la frecuencia con la que IIS crea un nuevo archivo de registro. El atributo period puede ser uno de los siguientes valores posibles.

El valor predeterminado es Daily.
Value Descripción
Daily Cree un nuevo archivo de registro diariamente.

El valor numérico es 1.
Hourly Cree un nuevo archivo de registro cada hora.

El valor numérico es 4.
MaxSize Cree un nuevo archivo de registro cuando se alcance un tamaño máximo. El tamaño máximo se especifica en el atributo truncateSize.

El valor numérico es 0.
Monthly Cree un nuevo archivo de registro mensualmente.

El valor numérico es 3.
Weekly Cree un nuevo archivo de registro semanalmente.

El valor numérico es 2.
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 del archivo es de 1048 576 bytes. Si este atributo se establece en un valor inferior a 1048 576 bytes, el valor predeterminado se asume implícitamente como 1048 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 <logFile> elemento para especificar la configuración que IIS registra para un sitio web denominado Contoso. El atributo period hace que IIS cree un nuevo 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 para generar un nuevo archivo de registro diariamente. También configuran IIS para usar la hora en el servidor local para 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 apphostcommit en 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