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
Ö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).
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.
Doppelklicken Sie im Bereich Start auf Protokollierung.
Klicken Sie im Bereich Aktionen auf Aktivieren, um die Protokollierung zu aktivieren.
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.
(Optional) Falls Sie in Schritt 5 in der Dropdownliste Format die Option W3C ausgewählt haben, klicken Sie auf Felder auswählen.
(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.
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 .
|
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()