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

  1. Ö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.
  2. 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.

  3. Doppelklicken Sie im Bereich Start auf Protokollierung.
    Screenshot of the Default Web Site Home page. The icon for Logging is highlighted.

  4. 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.
    Screenshot of the Logging page within I I S Manager.

  5. 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.
      Screenshot of the W 3 C Logging Fields dialog box.

Konfigurieren der ETW-Protokollierung (Ereignisablaufverfolgung für Windows) oder Dateiprotokollierung für W3C-Protokolle

  1. Ö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.
  2. Erweitern Sie im Bereich Verbindungen den Servername, erweitern Sie Sites, und wählen Sie dann eine Site aus.

  3. Doppelklicken Sie im Bereich „Start“ der Site auf Protokollierung.

  4. 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.

    Screenshot of the I I S Manager window displaying the Logging page.

Konfigurieren der Leerung eines W3C-Protokolls nach Eintragsanzahl

  1. Ö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.
  2. Erweitern Sie im Bereich Verbindungen den Eintrag für den Server, und doppelklicken Sie dann auf Konfigurations-Editor.

  3. Erweitern Sie im Konfigurations-Editor für Abschnitt den Eintrag system.applicationHost, und wählen Sie anschließend sites aus.

  4. Klicken Sie auf (Sammlung) und dann auf die Auslassungspunkte.

  5. Wählen Sie die Website aus, die Sie konfigurieren möchten, und erweitern Sie dann logFile.

  6. Geben Sie für flushByEntryCountW3Clog die Anzahl der Ereignisse ein, die im Puffer gespeichert werden, bevor sie in die Protokolldatei geleert werden.

  7. Klicken Sie im Bereich Aktion auf Übernehmen.

    Screenshot of the Collection Editor Window. Flush By Entry Count W 3 C Log is highlighted in the Properties field.

Konfigurieren der maximalen Länge von Protokollzeilen

  1. Ö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.
  2. Erweitern Sie im Bereich Verbindungen den Eintrag für den Server, und doppelklicken Sie dann auf Konfigurations-Editor.

  3. Erweitern Sie im Konfigurations-Editor für Abschnitt den Eintrag system.applicationHost, und wählen Sie anschließend sites aus.

  4. Klicken Sie auf (Sammlung) und dann auf die Auslassungspunkte.

  5. Wählen Sie die Website aus, die Sie konfigurieren möchten, und erweitern Sie dann logFile.

  6. Geben Sie für maxLogLineLength die maximale Anzahl von Bytes in einer einzelnen Zeile einer Protokolldatei ein.

  7. Klicken Sie im Bereich Aktion auf Übernehmen.

    Screenshot of the Collection Editor window. Max Log Line Length is highlighted in the Properties field.

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.
Wert Beschreibung
BytesRecv Protokolliert die Anzahl der vom Server empfangenen Bytes.
BytesSent Protokolliert die Anzahl der vom Server gesendeten Bytes.
ClientIP Protokolliert die IP-Adresse des Clients, von dem die Anforderung stammt.
ComputerName Protokolliert den Namen des Servers, auf dem der Protokolldateieintrag generiert wurde.
Cookie Protokolliert den Inhalt empfangener Cookies, sofern Inhalte vorhanden sind.
Date Protokolliert das Datum, an dem die Aktivität stattgefunden hat.
Host Protokolliert den Hostheadernamen, sofern dieser vorhanden ist.
HttpStatus Protokolliert den HTTP-Statuscode.
HttpSubStatus Protokolliert den Unterstatuscode des HTTP-Fehlers. Für den HTTP-Fehler 500.18 lautet der Statuscode beispielsweise 500 und der Unterstatuscode 18.
Method Protokolliert die angeforderte Aktion. Beispielsweise GET, POST usw.
ProtocolVersion Protokolliert die vom Client verwendete Protokollversion.
Referer Protokolliert die zuletzt vom Benutzer besuchte Site. Diese Website stellte eine Verknüpfung zur aktuellen Website her.
ServerIP Protokolliert die IP-Adresse des Servers, auf dem der Protokolldateieintrag generiert wurde.
ServerPort Protokolliert die Serverportnummer, die für die Site konfiguriert wurde.
SiteName Protokolliert den Internetdienstnamen und die Instanznummer für die Site.
Time Protokolliert den Zeitpunkt der Aktivität in der UTC-Zeit.
TimeTaken Protokolliert die zur Ausführung einer Anforderung benötigte Zeit. Die benötigte Zeit wird in Millisekunden aufgezeichnet.

Hinweis: Der Zeitstempel der Clientanforderung wird initialisiert, wenn HTTP.sys das erste Byte empfängt, aber bevor HTTP.sys mit der Analyse der Anforderung beginnt. Der Zeitstempel der Clientanforderung wird beendet, wenn der Abschluss des letzten IIS-Sendevorgangs erfolgt. Die Zeit im Netzwerk wird in der benötigten Zeit nicht berücksichtigt. Die benötigte Zeit für die erste Anforderung an die Site ist etwas länger als die von anderen ähnlichen Anforderungen, da HTTP.sys die Protokolldatei mit der ersten Anforderung öffnet.
UriQuery Protokolliert die Abfrage, die der Client auszuführen versucht hat (sofern vorhanden). Eine URI-Abfrage (Universal Resource Identifier) ist nur für dynamische Seiten erforderlich und besteht in der Regel aus Parametern, die an die URL übergeben wurden.
UriStem Protokolliert die Informationen zum Stamm des URI, der das Ziel der Aktion ist. Beispiel: „Default.htm“.
UserAgent Protokolliert den vom Client verwendeten Browsertyp.
UserName Protokolliert den Namen des authentifizierten Benutzers, der auf Ihren Server zugegriffen hat. Anonyme Benutzer werden durch einen Bindestrich gekennzeichnet.
Win32Status Protokolliert den Windows-Statuscode.
logFormat Optionales Enumerationsattribut.

Gibt das Format der Protokolldatei an. Das logFormat-Attribut kann auf einen der folgenden Werte festgelegt werden.

Der Standardwert ist W3C.
Wert Beschreibung
Custom Verwendet ein benutzerdefiniertes Protokolldateiformat für ein benutzerdefiniertes Protokollierungsmodul.

Der numerische Wert ist 3.
IIS Verwendet das Microsoft IIS-Protokolldateiformat, um Informationen zu einer Site zu protokollieren. Dieses von HTTP.sys verwaltete Format ist ein festes , textbasiertes ASCII-Format, d. h. dass Sie die zu protokollierenden Felder nicht festlegen können. Felder sind durch Kommas getrennt, und Zeit wird als lokale Zeit aufgezeichnet. Im Folgenden finden Sie eine Liste mit Feldern, die beim Format IIS für Protokolldateien verwendet werden:
  • Client-IP-Adresse
  • Benutzername
  • Datum
  • Time
  • Dienst und Instanz
  • Servername
  • Server-IP-Adresse
  • Benötigte Zeit
  • Vom Client gesendete Bytes
  • Vom Server gesendete Bytes
  • Service status code (Ein Wert von 200 gibt an, dass die Anforderung erfolgreich verarbeitet wurde.)
  • Windows status code (Ein Wert von 0 gibt an, dass die Anforderung erfolgreich verarbeitet wurde.)
  • Anforderungstyp
  • Ziel des Vorgangs
  • Parameter (die Parameter, die an ein Skript übergeben werden.)
Nicht alle Felder enthalten Daten. Wenn ein Feld keine Daten enthält, wird ein Bindestrich (-) als Platzhalter angezeigt. Wenn ein Feld ein nicht druckbares Zeichen enthält, wird dieses von HTTP.sys durch ein Pluszeichen (+) ersetzt, um das Protokolldateiformat beizubehalten.

Der numerische Wert ist 0.
NCSA Verwendet das allgemeine NCSA-Protokolldateiformat (National Center for Supercomputing Applications), um Informationen zu einer Site zu protokollieren. Dieses von HTTP.sys verwaltete Format ist ein festes , textbasiertes ASCII-Format, d. h. dass Sie die zu protokollierenden Felder nicht festlegen können. Felder werden durch Leerzeichen getrennt, und Zeit wird als lokale Zeit mit UTC-Versatz (Coordinated Universal Time) aufgezeichnet. Im Folgenden finden Sie eine Liste der Felder, die beim Format "NCSA allgemein" für Protokolldateien verwendet werden:
  • Remotehostadresse
  • Remote log name (Dieser Wert ist immer ein Bindestrich).
  • Benutzername
  • Datum, Uhrzeit und UTC-Offset
  • Anforderungs- und Protokollversion
  • Service status code (Ein Wert von 200 gibt an, dass die Anforderung erfolgreich verarbeitet wurde.)
  • Gesendete Bytes
Nicht alle Felder enthalten Daten. Wenn ein Feld keine Daten enthält, wird ein Bindestrich (-) als Platzhalter angezeigt. Wenn ein Feld ein nicht druckbares Zeichen enthält, wird dieses von HTTP.sys durch ein Pluszeichen (+) ersetzt, um das Protokolldateiformat beizubehalten.

Der numerische Wert ist 1.
W3C Verwendet das erweiterte W3C-Protokolldateiformat, um Informationen zu einer Site zu protokollieren. Dieses von HTTP.sys verwaltete Format ist ein benutzerdefinierbares , textbasiertes ASCII-Format, d. h. dass Sie die zu protokollierenden Felder festlegen können. Geben Sie die Felder an, die im Attribut logExtFileFlags protokolliert werden. Felder werden durch Leerzeichen getrennt, und Zeit wird in UTC (Coordinated Universal Time) aufgezeichnet.

Der numerische Wert ist 2.
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 Serverfestgelegt 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.
Wert Beschreibung
File IIS-Ereignisdaten werden in einer Textprotokolldatei gespeichert. Um die Ereignisdaten zu verarbeiten, müssen Sie die textbasierte Protokolldatei analysieren. Da die Verarbeitung und Leerung von Textprotokolldateien Zeit in Anspruch nimmt, können Sie die Ereignisdaten nicht in Echtzeit zu verarbeiten.

Der numerische Wert ist 1.
ETW Anstatt Daten direkt in Textdateien zu protokollieren, sendet IIS protokollierte Informationen an die Ereignisablaufverfolgung für Windows (ETW), einen generischen Ereignismechanismus, der in Windows integriert ist. Sie können protokollierte Daten mithilfe von Standardabfragetools wie der Nachrichtenanalyse oder benutzerdefinierten Tools verwalten. ETW verarbeitet protokollierte Informationen in Echtzeit und bietet Ihnen die Möglichkeit, die Daten zu filtern und anzuzeigen und die Protokollierung dynamisch zu aktivieren oder zu deaktivieren. ETW fügt auch detaillierte Informationen zu Ereignisdaten hinzu und stellt Daten bereit, auf die HTTP.sys keinen Zugriff hat. Weitere Informationen finden Sie unter Ereignisablaufverfolgung.

Der numerische Wert ist 2.
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.
Wert Beschreibung
Daily Erstellt täglich eine neue Protokolldatei.

Der numerische Wert ist 1.
Hourly Erstellt stündlich eine neue Protokolldatei.

Der numerische Wert ist 4.
MaxSize Erstellt eine neue Protokolldatei, wenn eine maximale Größe erreicht ist. Die maximale Größe wird im truncateSize-Attribut angegeben.

Der numerische Wert ist 0.
Monthly Erstellt monatlich eine neue Protokolldatei.

Der numerische Wert ist 3.
Weekly Erstellt wöchentlich eine neue Protokolldatei.

Der numerische Wert ist 2.
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