HTTP-Protokollierung <httpLogging>

Übersicht

Über das <httpLogging>-Element können Sie IIS so konfigurieren, dass Protokolleinträge nur für erfolgreiche Anforderungen, nur für nicht erfolgreiche Anforderungen oder für beide Fälle generiert werden. Nachdem Sie die Protokollierung für die einzelnen Websites auf der Serverebene konfiguriert haben, können Sie mithilfe dieses Elements eine selektive Protokollierung für einzelne URLs aktivieren. Standardmäßig ist die HTTP-Protokollierung für alle Anforderungen in Internetinformationsdienste 7 (Internet Information Services, IIS) aktiviert.

Anhand der Protokolldatei für eine Site können Sie jederzeit ermitteln, welche Anforderungen erfolgreich sind und welche nicht. Wenn IIS bestimmte Anforderungen für eine Site nicht mehr protokollieren soll, deaktivieren Sie die Protokollierung für diese Site.

Kompatibilität

Version Hinweise
IIS 10.0 Das <httpLogging>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <httpLogging>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <httpLogging>-Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <httpLogging>-Element wurde in IIS 7.5 nicht geändert.
IIS 7.0 Das <httpLogging>-Element wurde in IIS 7.0 eingeführt.
IIS 6.0 Die Elemente <httpLogging> und <logFile> ersetzen die Protokollierungseigenschaften des IIsWebService-Metabasisobjekts von IIS 6.0.

Setup

Das <httpLogging>-Element ist in der Standardinstallation von IIS 7 enthalten.

Gewusst wie

Aktivieren der HTTP-Protokollierung für eine Site oder Anwendung

  1. Öffnen Sie Internetinformationsdienste-Manager (IIS-Manager):

    • Vorgehensweise unter Windows Server 2012 oder Windows Server 2012 R2:

      • Klicken Sie auf der Taskleiste auf Server-Manager > Tools > Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows 8 oder 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 Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows Server 2008 oder Windows Server 2008 R2:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung, und klicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows Vista oder Windows 7:

      • Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
      • Doppelklicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
  2. Erweitern Sie im Bereich Verbindungen den Servernamen, erweitern Sie Sites, und navigieren Sie dann zu der Website oder Anwendung, für die Sie die HTTP-Protokollierung konfigurieren möchten.

  3. Doppelklicken Sie im Bereich Start auf Protokollierung.

  4. Klicken Sie im Bereich Aktionen auf Aktivieren, um die Protokollierung zu aktivieren.
    Screenshot of the Logging pane. The text Use this feature to configure how I I S logs request server is shown.

  5. Wählen Sie in der Dropdownliste Format das Protokolldateiformat aus, das Sie für Ihre Site oder Anwendung verwenden möchten. Falls Sie den Standardspeicherort ändern möchten, an dem IIS Protokolldateien speichert, geben Sie im Feld Verzeichnis den Pfad ein, an dem die Protokolldateien für die Site oder Anwendung gespeichert werden sollen.

  6. (Optional) Falls Sie in Schritt 5 in der Dropdownliste Format die Option W3C ausgewählt haben, klicken Sie auf Felder auswählen.

  7. (Optional) Aktivieren Sie im Dialogfeld W3C-Protokollfelder die Kontrollkästchen der W3C-Felder, die Sie protokollieren möchten, deaktivieren Sie ggf. die Kontrollkästchen von W3C-Feldern, die Sie nicht protokollieren möchten, und klicken Sie anschließend auf OK.
    Screenshot of the W three C Logging Fields dialog box. The checkboxes for Date, Time, Client I P Address, User Name, Service Name and Server I P Address are checked. Service Name is highlighted.

  8. Klicken Sie im Bereich Aktionen auf Übernehmen.
    Screenshot of the Actions pane. The One log file box is shown.

Konfiguration

Das <httpLogging>-Element kann auf der Serverebene in der Datei „ApplicationHost.config“ und auf der Site-, Anwendungs- oder URL-Ebene in der entsprechenden Datei vom Typ „Web.config“ konfiguriert werden.

Attribute

Attribut Beschreibung
dontLog Optionales boolesches Attribut.

Gibt an, ob die HTTP-Protokollierung für erfolgreiche Anforderungen aktiviert ist. Eine Anforderung wird als erfolgreich betrachtet, wenn ihr Statuscode kleiner als 400 ist.

Der Standardwert ist false.
selectiveLogging Optionales enum-Attribut.

Gibt die Art der zu protokollierenden Anforderungen an.

Das selectiveLogging-Attribut kann einen der folgenden Werte haben.

Der Standardwert ist LogAll.
Wert Beschreibung
LogAll Protokolliert alle Anforderungen.

Der numerische Wert ist 0.
LogSuccessful Protokolliert nur erfolgreiche Anforderungen. Der HTTP-Statuscodebereich für erfolgreiche Anforderungen reicht von 100 bis 399.

Der numerische Wert ist 1.
LogError Protokolliert nur nicht erfolgreiche Anforderungen. Der HTTP-Statuscodebereich für nicht erfolgreiche Anforderungen reicht von 400 bis 999.

Der numerische Wert ist 2.

Untergeordnete Elemente

Keine.

Konfigurationsbeispiel

Wenn das folgende Konfigurationsbeispiel in die Datei „Web.config“ für eine Site oder Anwendung eingeschlossen wird, wird die HTTP-Protokollierung konfiguriert und angegeben, dass IIS nur Anforderungen protokollieren soll, die Fehler generieren.

<configuration>
   <system.webServer>
      <httpLogging dontLog="false" selectiveLogging="LogError" />
   </system.webServer>
<configuration>

Beispielcode

In den folgenden Beispielen wird die HTTP-Protokollierung für eine Website mit dem Namen „Contoso“ aktiviert und angegeben, dass IIS keine Anforderungen protokollieren soll.

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/httpLogging /dontLog:"True" /commit:apphost

appcmd.exe set config "Contoso" -section:system.webServer/httpLogging /selectiveLogging:"LogAll" /commit:apphost

Hinweis

Legen Sie den commit-Parameter auf apphost fest, 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 httpLoggingSection = config.GetSection("system.webServer/httpLogging", "Contoso");
         httpLoggingSection["selectiveLogging"] = @"LogAll";
         httpLoggingSection["dontLog"] = true;
         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim httpLoggingSection As ConfigurationSection = config.GetSection("system.webServer/httpLogging", "Contoso")
      httpLoggingSection("selectiveLogging") = "LogAll"
      httpLoggingSection("dontLog") = True
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var httpLoggingSection = adminManager.GetAdminSection("system.webServer/httpLogging", "MACHINE/WEBROOT/APPHOST/Contoso");
httpLoggingSection.Properties.Item("selectiveLogging").Value = "LogAll";
httpLoggingSection.Properties.Item("dontLog").Value = true;

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set httpLoggingSection = adminManager.GetAdminSection("system.webServer/httpLogging", "MACHINE/WEBROOT/APPHOST/Contoso")
httpLoggingSection.Properties.Item("selectiveLogging").Value = "LogAll"
httpLoggingSection.Properties.Item("dontLog").Value = True

adminManager.CommitChanges()