Protokolldateien für eine Website <logFile>
Übersicht
Das <logFile>
-Element des <site>
-Elements enthält Attribute, mit denen Sie die Protokollierung für eine Site in Internetinformationsdienste 7 (Internet Information Services, IIS) und höher konfigurieren können.
Sie können beispielsweise die Protokollierung aktivieren oder deaktivieren, das Format der IIS-Protokolldatei konfigurieren, die Informationskategorien angeben, die in der Protokolldatei gespeichert werden sollen, und das Verzeichnis ändern, in dem die Protokolldatei gespeichert wird. Sie können das <logFile>
-Element auch verwenden, um basierend auf der Protokolldateigröße oder dem Zeitintervall und der maximalen Größe (in Byte) einer Protokolldatei zu steuern, wie oft IIS eine neue Protokolldatei erstellt.
Standardmäßig verwenden IIS 7 und höhere Versionen das W3C-Protokolldateiformat (World Wide Web Consortium). Sie können diese Einstellung ändern, indem Sie das logFormat-Attribut in IIS, NCSA oder Custom ändern.
Hinweis
Die ODBC-Protokollierung (Open Database Connectivity) wird in IIS 7 und höher als benutzerdefiniertes Protokollierungsmodul implementiert. Daher sind zum Aktivieren und Konfigurieren der ODBC-Protokollierung in IIS 7 und höher zwei separate Aktionen erforderlich:
- Festlegen der Attribute für die ODBC-Protokollierung im
<odbcLogging>
-Element. Diese Attribute geben den Namen der Systemdatenquelle (System Data Source Name, DSN), den Tabellennamen, den Benutzernamen und das Kennwort für die ODBC-Verbindung an. - Festlegen der korrekten Attribute für die benutzerdefinierte Protokollierung im
<logFile>
-Element. Diese Attribute müssen das Protokolldateiformat auf „Custom“ und die Klassen-ID des benutzerdefinierten Protokoll-Plug-Ins auf „{FF16065B-DE82-11CF-BC0A-00AA006111E0}“ festlegen.
Weitere Informationen zur ODBC-Protokollierung finden Sie im Artikel zum <odbcLogging>
-Element.
Sie können die von IIS protokollierten Informationskategorien festlegen, indem Sie das Attribut logExtFileFlags bearbeiten. Die Standardwerte sind Date
, Time
, ClientIP
, UserName
, ServerIP
, Method
, UriStem
, UriQuery
, TimeTaken
, HttpStatus
, Win32Status
, ServerPort
, UserAgent
, HttpSubStatus
und Referer
.
Hinweis
Wenn das <logFile>
-Element für eine bestimmte Site sowohl im Abschnitt <siteDefaults>
als auch im Abschnitt <site>
konfiguriert ist, wird die Konfiguration im Abschnitt <site>
für diese Site verwendet.
In IIS 8.5 können Sie zusätzlich zu den standardmäßig protokollierten Feldern auch benutzerdefinierte Felder protokollieren. Das Protokolldateiformat muss auf W3C festgelegt sein, wenn Sie benutzerdefinierte Felder hinzufügen möchten. Weitere Informationen finden Sie unter customFields
.
Kompatibilität
Version | Hinweise |
---|---|
IIS 10.0 | Das <logFile> Element wurde in IIS 10.0 nicht geändert. |
IIS 8.5 | Das Attribut flushByEntryCountW3CLog wurde hinzugefügt, um die Anzahl der Ereignisse anzugeben, die im Puffer gespeichert werden, bevor sie in die Protokolldatei geleert werden. Das Attribut logTargetW3C wurde hinzugefügt, um anzugeben, wie protokollierte IIS-Ereignisse verarbeitet werden. Das Attribut maxLogLineLength wurde hinzugefügt, um die maximale Länge einer Zeile in einer Protokolldatei anzugeben. Das untergeordnete <customFields> -Element wurde hinzugefügt. |
IIS 8.0 | Das Attribut logSiteId wurde hinzugefügt, um den Inhalt des Felds „-sitename“ anzugeben, und das referer -Flag wurde dem Standardwert des Attributs logExtFileFlags hinzugefügt. |
IIS 7.5 | Das <logFile> -Element wurde in IIS 7.5 nicht geändert. |
IIS 7.0 | Das <logFile> -Element des <site> -Elements wurde in IIS 7.0 eingeführt. |
IIS 6.0 | Das <logFile> -Element ersetzt Abschnitte der Protokollierungseigenschaften im IIsWebService-Metabasisobjekts von IIS 6.0. |
Setup
Das <logFile>
-Element ist in der Standardinstallation von IIS 7 und höheren Versionen enthalten.
Gewusst wie
So bearbeiten Sie Protokollierungseinstellungen für eine Site
Öffnen Sie den Internet Information Services (IIS) Manager:
Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:
- Klicken Sie der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows 8 oder Windows 8.1 verwenden:
- Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
- Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:
- Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungund dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows Vista oder Windows 7 verwenden:
- Klicken Sie auf der Taskleiste auf "Start" und dann auf "Systemsteuerung".
- Doppelklicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Erweitern Sie im Bereich Verbindungen den Servernamen, erweitern Sie Websites, und klicken Sie dann auf die Website, auf der Sie die Protokollierung konfigurieren möchten.
Doppelklicken Sie im Bereich Start auf Protokollierung.
Wählen Sie im Bereich Protokollierung im Feld Format das Protokolldateiformat aus, und geben Sie dann im Feld Verzeichnis den Pfad des Verzeichnisses ein, in dem Sie die Protokolldateien speichern möchten, oder klicken Sie auf Durchsuchen, um das Verzeichnis zum Speichern der Protokolldateien auszuwählen.
Wenn Sie das W3C-Protokolldateiformat verwenden:
- Klicken Sie auf Felder auswählen, um die zu protokollierenden Informationstypen auszuwählen.
- Aktivieren Sie im Dialogfeld W3C-Protokollfelder die Kontrollkästchen für Optionen, die Sie protokollieren möchten, deaktivieren Sie die Kontrollkästchen für Optionen, die Sie nicht protokollieren möchten, und klicken Sie dann auf OK.
Konfigurieren der ETW-Protokollierung (Ereignisablaufverfolgung für Windows) oder Dateiprotokollierung für W3C-Protokolle
Öffnen Sie den Internet Information Services (IIS) Manager:
Wenn Sie Windows Server 2012 R2 verwenden:
- Klicken Sie der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
Vorgehensweise unter Windows 8.1:
- Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
- Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Erweitern Sie im Bereich Verbindungen den Servername, erweitern Sie Sites, und wählen Sie dann eine Site aus.
Doppelklicken Sie im Bereich „Start“ der Site auf Protokollierung.
Wählen Sie auf der Startseite Protokollierung für Protokollereignisziel die Optionen Nur Protokolldatei, Nur ETW-Ereignis oder Sowohl Protokolldatei als auch ETW-Ereignis aus.
Konfigurieren der Leerung eines W3C-Protokolls nach Eintragsanzahl
Öffnen Sie den Internet Information Services (IIS) Manager:
Wenn Sie Windows Server 2012 R2 verwenden:
- Klicken Sie der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
Vorgehensweise unter Windows 8.1:
- Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
- Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Erweitern Sie im Bereich Verbindungen den Eintrag für den Server, und doppelklicken Sie dann auf Konfigurations-Editor.
Erweitern Sie im Konfigurations-Editor für Abschnitt den Eintrag
system.applicationHost
, und wählen Sie anschließend sites aus.Klicken Sie auf (Sammlung) und dann auf die Auslassungspunkte.
Wählen Sie die Website aus, die Sie konfigurieren möchten, und erweitern Sie dann logFile.
Geben Sie für flushByEntryCountW3Clog die Anzahl der Ereignisse ein, die im Puffer gespeichert werden, bevor sie in die Protokolldatei geleert werden.
Klicken Sie im Bereich Aktion auf Übernehmen.
Konfigurieren der maximalen Länge von Protokollzeilen
Öffnen Sie den Internet Information Services (IIS) Manager:
Wenn Sie Windows Server 2012 R2 verwenden:
- Klicken Sie der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
Vorgehensweise unter Windows 8.1:
- Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
- Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Erweitern Sie im Bereich Verbindungen den Eintrag für den Server, und doppelklicken Sie dann auf Konfigurations-Editor.
Erweitern Sie im Konfigurations-Editor für Abschnitt den Eintrag
system.applicationHost
, und wählen Sie anschließend sites aus.Klicken Sie auf (Sammlung) und dann auf die Auslassungspunkte.
Wählen Sie die Website aus, die Sie konfigurieren möchten, und erweitern Sie dann logFile.
Geben Sie für maxLogLineLength die maximale Anzahl von Bytes in einer einzelnen Zeile einer Protokolldatei ein.
Klicken Sie im Bereich Aktion auf Übernehmen.
Konfiguration
Attribute
Attribut | Beschreibung | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
customLogPluginClsid |
Optionales Zeichenfolgeattribut. Gibt die COM-Objektklassen-ID (CLSID) oder IDs in der entsprechenden Rangfolge für benutzerdefinierte Module an. |
||||||||||||||||||||||||||||||||||||||||||||||
directory |
Optionales Zeichenfolgeattribut. Gibt das Protokollierungsverzeichnis an, in dem die Protokolldatei und mit der Protokollierung zusammenhängende Unterstützungsdateien gespeichert werden. Der Standardwert ist %SystemDrive%\inetpub\logs\LogFiles . |
||||||||||||||||||||||||||||||||||||||||||||||
enabled |
Optionales boolesches Attribut. Gibt an, ob die Protokollierung aktiviert (true) oder deaktiviert (false) ist. Hinweis: ASP- und ODBC-Fehler werden nicht in den IIS-Protokolldateien protokolliert. Der Standardwert ist true . |
||||||||||||||||||||||||||||||||||||||||||||||
flushByEntryCountW3CLog |
Optionales Uint-Attribut. Gibt die Anzahl der Ereignisse an, die im Puffer gespeichert werden, bevor sie in die Protokolldatei geleert werden. Eine niedrigere Zahl führt dazu, dass Ereignisse schneller geleert werden, und beeinträchtigt aufgrund der größeren Anzahl von Datenträgervorgängen die Leistung. Verringern Sie diesen Wert zur Problembehandlung in Echtzeit, und erhöhen Sie ihn zum Steigern der Leistung. Bei einem Wert von 0 erfolgt die Leerung mit dem Standardhöchstwert 64.000.Der Standardwert ist 0 . |
||||||||||||||||||||||||||||||||||||||||||||||
localTimeRollover |
Optionales boolesches Attribut. Gibt an, ob eine neue Protokolldatei basierend auf der Ortszeit oder der koordinierten Weltzeit (Coordinated Universal Time, UTC, zuvor Greenwich Mean Time, GMT) erstellt wird. Bei „false“ wird eine neue Protokolldatei basierend auf der UTC-Zeit erstellt. Hinweis: Unabhängig von der Einstellung basiert der Zeitstempel jedes Protokolldatensatzes der erweiterten W3C-Protokollierung auf der UTC-Zeit. Der Standardwert ist false . |
||||||||||||||||||||||||||||||||||||||||||||||
logExtFileFlags |
Optionales Flags-Attribut. Gibt die Informationskategorien an, die während der Protokollierung von Ereignissen für eine Site in die Protokolldatei (bei Verwendung des erweiterten W3C-Formats für Protokolldateien) oder in die ODBC-Datenquelle geschrieben werden. Das Attribut logExtFileFlags kann auf einen oder mehrere der folgenden Werte festgelegt werden. Wenn Sie mehrere Werte angeben, trennen Sie diese durch ein Komma (,). Die Standardwerte sind Date , Time , ClientIP , UserName , ServerIP , Method , UriStem , UriQuery , TimeTaken , HttpStatus , Win32Status , ServerPort , UserAgent , HttpSubStatus und Referer .
|
||||||||||||||||||||||||||||||||||||||||||||||
logFormat |
Optionales Enumerationsattribut. Gibt das Format der Protokolldatei an. Das logFormat-Attribut kann auf einen der folgenden Werte festgelegt werden. Der Standardwert ist W3C .
|
||||||||||||||||||||||||||||||||||||||||||||||
logSiteId |
Optionales boolesches Attribut. Gibt an, dass das Feld „s-sitename“ entweder den Sitenamen (false) oder die Site-ID (true) enthält. Wenn die Eigenschaft „Eine Protokolldatei pro“ auf Site festgelegt ist (Standardeinstellung), enthält die Protokolldatei standardmäßig keine Spalte „s-sitename“, da stattdessen die Eigenschaft „Protokolldateiname“ die Site-ID enthält. Wenn die Eigenschaft „Eine Protokolldatei pro“ auf Server festgelegt ist, wird die Spalte „-s-sitename“ standardmäßig in die Protokolldatei aufgenommen.Der Standardwert ist True , d. h. das Feld „s-sitename“ enthält die Site-ID. Um stattdessen den Sitenamen zu protokollieren, legen Sie logSiteID auf False fest. |
||||||||||||||||||||||||||||||||||||||||||||||
logTargetW3C |
Optionales Flags-Attribut. Gibt an, ob IIS die Ereignisablaufverfolgung für Windows (ETW) und/oder die Dateiprotokollierung für die Verarbeitung protokollierter IIS-Ereignisse verwendet. ETW bietet Echtzeitprotokollierung und ermöglicht die Verwendung eines ETW-Anbieters und von Standardabfragemechanismen. Die Dateiprotokollierung speichert Ereignisdaten in Textdateien, die Sie analysieren können, um auf Protokollierungsdaten zuzugreifen. Wenn IIS Protokolldateien verwendet, protokolliert HTTP.sys Daten nach dem Abschluss einer Transaktion direkt in Textprotokolldateien. Wenn Sie ETW verwenden, sendet HTTP.sys Daten mithilfe des iislogging-Anbieters an ETW, und der LOGSVC-Dienst verwaltet die Protokolldaten, einschließlich ETW-Datenabfragen, bei denen Daten direkt aus Arbeitsprozessen gesammelt und an eine Protokolldatei gesendet werden. Das Attribut logTargetW3C kann die folgenden möglichen Werte aufweisen. Der Standardwert ist File . Wenn für die Site sowohl File als auch ETW für logTargetW3C in „applicationHost.config“ aufgeführt sind, entspricht dies der Auswahl von Sowohl Protokolldatei als auch ETW-Ereignis für die Einstellungen der Protokolldatei der Site im Bereich Protokollierung im IIS-Manager.
|
||||||||||||||||||||||||||||||||||||||||||||||
maxLogLineLength |
Optionales Uint-Attribut. Gibt die maximale Länge einer Zeile in einer Protokolldatei an. Auf diese Weise können Sie die bei der Protokollierung angesammelte Datenmenge beschränken und insbesondere beim Hinzufügen benutzerdefinierter Protokollierungsfelder Speicherplatz sparen. Der gültige Bereich ist 2 bis 65.536. Der Standardwert ist 65536 . |
||||||||||||||||||||||||||||||||||||||||||||||
period |
Optionales Enumerationsattribut. Gibt an, wie oft IIS eine neue Protokolldatei erstellt. Die zulässigen Werte für das period-Attribut sind im Folgenden aufgeführt. Der Standardwert ist Daily .
|
||||||||||||||||||||||||||||||||||||||||||||||
truncateSize |
Optionales int64-Attribut. Legt die maximale Größe der Protokolldatei (in Bytes) fest, ab der eine neue Protokolldatei erstellt wird. Dieser Wert gilt nur, wenn für das period-Attribut der Wert „MaxSize“ ausgewählt ist. Die minimale Dateigröße beträgt 1.048.576 Bytes. Wenn für dieses Attribut ein kleinerer Wert als 1.048.576 Bytes festgelegt wird, wird implizit ein Standardwert von 1.048.576 Bytes angenommen. Der Standardwert ist 20971520 . |
Untergeordnete Elemente
Element | Beschreibung |
---|---|
customFields |
Optionales Element. Gibt die Konfigurationseinstellungen für eine Sammlung von Standardfeldern in einem W3C-Protokoll an. |
Konfigurationsbeispiel
Im folgenden Konfigurationsbeispiel wird das logExtFileFlags-Attribut des <logFile>
-Elements verwendet, um die Einstellungen anzugeben, die IIS für eine Website mit dem Namen Contoso protokolliert. Das period-Attribut veranlasst IIS, jede Stunde eine neue W3C-Protokolldatei zu erstellen; das localTimeRollover-Attribut legt fest, dass IIS die Zeit auf dem lokalen Server verwendet, um zu bestimmen, wann eine neue Protokolldatei erstellt und benannt wird.
<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>
Beispielcode
In den folgenden Beispielen wird die Protokollierung für eine Site namens Contoso konfiguriert. Jedes Beispiel ermöglicht die Protokollierung für die Site und konfiguriert die Siteprotokollierung, um täglich eine neue Protokolldatei zu generieren. Sie konfigurieren IIS auch so, dass die Zeit auf dem lokalen Server verwendet wird, um die Namen der Protokolldateien zu generieren und zu bestimmen, wann neue Protokolldateien erstellt werden sollen.
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
Hinweis
Sie müssen unbedingt den Commitparameterapphost
festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei ApplicationHost.config festgelegt.
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