Fichiers journaux d’un fichier <logFile> de site web
Vue d’ensemble
L’élément <logFile>
de l’élément <site>
contient des attributs qui vous permettent de configurer la journalisation d’un site sur IIS 7 et les versions ultérieures.
Par exemple, vous pouvez activer ou désactiver la journalisation, configurer le format du fichier journal IIS, spécifier les catégories d’informations à stocker dans le fichier journal et modifier le répertoire dans lequel il est stocké. Vous pouvez également utiliser l’élément <logFile>
pour contrôler la fréquence à laquelle IIS crée un fichier journal en fonction de la taille ou de l’intervalle de temps du fichier journal et de la taille maximale (en octets) qu’un fichier journal peut atteindre.
Par défaut, IIS 7 et les versions ultérieures utilisent le format de fichier journal W3C (World Wide Web Consortium). Vous pouvez modifier ce paramètre en modifiant l’attribut logFormat vers IIS, NCSAou Personnalisé.
Remarque
La journalisation ODBC est implémentée en tant que module de journalisation personnalisé dans IIS 7 et les versions ultérieures. Par conséquent, l’activation et la configuration de la journalisation ODBC dans IIS 7 et les versions ultérieures se composent de deux actions distinctes :
- Définition des attributs de journalisation ODBC dans l’élément
<odbcLogging>
. Ces attributs spécifient le nom de source de données système (DSN), le nom de table, le nom d’utilisateur et le mot de passe de la connexion ODBC. - Définition des attributs de journalisation personnalisés corrects dans l’élément
<logFile>
. Ces attributs doivent définir le format du fichier journal en « Personnalisé » et l’ID de classe de plug-in de journal personnalisé en « {FF16065B-DE82-11CF-BC0A-00AA006111E0} ».
Pour plus d’informations sur la journalisation ODBC, consultez l’élément <odbcLogging>
.
Vous pouvez définir les catégories d’informations que IIS journalise en modifiant l’attribut logExtFileFlags. Les valeurs par défaut sont Date
, Time
, ClientIP
, UserName
, ServerIP
, Method
, UriStem
, UriQuery
, TimeTaken
, HttpStatus
, Win32Status
, ServerPort
, UserAgent
, HttpSubStatus
, et Referer
.
Remarque
Si l’élément <logFile>
est configuré à la fois dans la section <siteDefaults>
et dans la section <site>
pour un site spécifique, la configuration de la section <site>
est utilisée pour ce site.
IIS 8.5 vous permet de journaliser des champs personnalisés en plus de l’ensemble journalisé standard. Le fichier journal doit être au format W3C afin d’ajouter des champs personnalisés. Pour plus d’informations, consultez customFields
.
Compatibilité
Version | Notes |
---|---|
IIS 10.0 | L’élément <logFile> n’a fait l’objet d’aucune modification dans IIS 10.0. |
IIS 8.5 | Ajout de l’attribut flushByEntryCountW3CLog pour spécifier le nombre d’événements à stocker dans la mémoire tampon avant qu’ils ne soient vidés dans le fichier journal. Ajout de l’attribut logTargetW3C pour spécifier la façon dont les événements IIS enregistrés sont traités. Ajout de l’attribut maxLogLineLength pour spécifier la longueur maximale d’une ligne dans un fichier journal. Ajout de l’élément <customFields> enfant. |
IIS 8.0 | L’attribut logSiteId a été ajouté pour spécifier le contenu du champ -sitename et l’indicateur referer a été ajouté à la valeur par défaut de l’attribut logExtFileFlags . |
IIS 7.5 | L’élément <logFile> n’a fait l’objet d’aucune modification dans IIS 7.5. |
IIS 7.0 | L’élément <logFile> de l’élément <site> a été introduit dans IIS 7.0. |
IIS 6.0 | L’élément <logFile> remplace les sections des propriétés de journalisation sur l’objet métabase IIS 6.0 IIsWebService . |
Programme d’installation
L’élément <logFile>
est inclus dans l’installation par défaut d’IIS 7.
Procédure
Comment modifier les paramètres de journalisation d’un site
Ouvrez le Gestionnaire Internet Information Services (IIS) :
Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :
- Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
Si vous utilisez Windows 8 ou Windows 8.1 :
- Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
- Cliquez sur Outils d'administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :
- Cliquez sur Démarrer, placez le curseur sur Outils d'administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
Si vous utilisez Windows Vista ou Windows 7 :
- Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
- Double-cliquez sur Outils d'administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
Dans le volet Connexions, développez le nom du serveur, développez Sites, puis cliquez sur le site Web duquel vous souhaitez configurer la journalisation.
Dans le volet Accueil, double-cliquez sur Journalisation.
Dans le volet Journalisation, sélectionnez le format de fichier journal dans la zone Format, puis tapez le chemin d’accès au répertoire dans lequel vous stockez les fichiers journaux dans le champ Répertoire ou cliquez sur Parcourir... pour choisir le répertoire dans lequel stocker les fichiers journaux.
Si vous choisissez d’utiliser le format de fichier journal W3C :
- Cliquez sur Sélectionner des champs pour choisir les types d’informations à journaliser.
- Dans la boîte de dialogue Champs de journalisation W3C, activez les cases à cocher des options que vous souhaitez journaliser, décochez les cases pour les options que vous ne souhaitez pas journaliser, puis cliquez sur OK.
Comment configurer ETW ou journaliser des fichiers pour les journaux W3C
Ouvrez le Gestionnaire Internet Information Services (IIS) :
Si vous utilisez Windows Server 2012 R2 :
- Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
Si vous utilisez Windows 8.1 :
- Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
- Cliquez sur Outils d'administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
Dans le volet Connexions, développez le nom du serveur, développez Sites, puis sélectionnez un site.
Dans le volet d’accueil du site, double-cliquez sur Journalisation.
Dans la page d’accueil de jJournalisation, en guise de Destination du journal d’événements, sélectionnez fichier journal uniquement, événement ETW uniquementou fichier journal et événement ETW.
Comment configurer le vidage d’un journal W3C en fonction du nombre d’entrées
Ouvrez le Gestionnaire Internet Information Services (IIS) :
Si vous utilisez Windows Server 2012 R2 :
- Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
Si vous utilisez Windows 8.1 :
- Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
- Cliquez sur Outils d'administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
Sélectionnez le serveur dans le volet Connexions, puis double-cliquez sur Éditeur de configuration.
Dans l’Éditeur de configuration, pour la Section, développez
system.applicationHost
, puis sélectionnez sites.Cliquez sur (Collection), puis sur les points de suspension.
Sélectionnez le site que vous souhaitez configurer, puis développez logFile.
Pour flushByEntryCountW3Clog, entrez le nombre d’événements à stocker dans la mémoire tampon avant qu’ils ne soient vidés dans le fichier journal.
Dans le volet Actions, cliquez sur Appliquer.
Comment configurer la longueur maximale d’une ligne de journal
Ouvrez le Gestionnaire Internet Information Services (IIS) :
Si vous utilisez Windows Server 2012 R2 :
- Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
Si vous utilisez Windows 8.1 :
- Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
- Cliquez sur Outils d'administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
Sélectionnez le serveur dans le volet Connexions, puis double-cliquez sur Éditeur de configuration.
Dans l’Éditeur de configuration, pour la Section, développez
system.applicationHost
, puis sélectionnez sites.Cliquez sur (Collection), puis sur les points de suspension.
Sélectionnez le site que vous souhaitez configurer, puis développez logFile.
Pour maxLogLineLength, entrez le nombre maximal d’octets dans une seule ligne d’un fichier journal.
Dans le volet Actions, cliquez sur Appliquer.
Configuration
Attributs
Attribut | Description | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
customLogPluginClsid |
Attribut de chaîne facultatif. Spécifie l’ID (ou les ID) de classe d’objet COM (CLSID) par ordre de priorité, pour les modules personnalisés. |
||||||||||||||||||||||||||||||||||||||||||||||
directory |
Attribut de chaîne facultatif. Spécifie le répertoire de journalisation, où sont stockés le fichier journal et les fichiers de prise en charge liés à la journalisation. La valeur par défaut est %SystemDrive%\inetpub\logs\LogFiles . |
||||||||||||||||||||||||||||||||||||||||||||||
enabled |
Attribut booléen facultatif. Spécifie si la journalisation est activée (true) ou désactivée (false) pour un site. Remarque : les erreurs ASP et ODBC ne sont pas journalisées dans les fichiers journaux IIS. La valeur par défaut est true . |
||||||||||||||||||||||||||||||||||||||||||||||
flushByEntryCountW3CLog |
Attribut uint facultatif. Spécifie le nombre d’événements à stocker dans la mémoire tampon avant qu’ils ne soient vidés dans le fichier journal. Un nombre inférieur entraîne un vidage plus rapide des événements, ce qui diminue les performances en raison d’un plus grand nombre d’opérations sur disque. Réduisez cette valeur pour une résolution des problèmes plus en temps réel, augmentez-la pour un gain de performances. Une valeur de 0 spécifie que le vidage se produit au maximum par défaut de 64 000.La valeur par défaut est 0 . |
||||||||||||||||||||||||||||||||||||||||||||||
localTimeRollover |
Attribut booléen facultatif. Spécifie si un nouveau fichier journal est créé en fonction de l’heure locale ou du temps universel coordonné (UTC), précédemment appelé Heure moyenne de Greenwich (GMT). Quand la valeur est « false », un nouveau fichier journal est créé en fonction de l’heure UTC. Remarque : quel que soit le paramètre, l’horodatage de chaque enregistrement du journal de journalisation étendu W3C est basé sur UTC. La valeur par défaut est false . |
||||||||||||||||||||||||||||||||||||||||||||||
logExtFileFlags |
Attribut d’indicateurs facultatifs. Spécifie les catégories d’informations écrites dans le fichier journal (lorsque vous utilisez le format de fichier journal étendu W3C) ou dans la source de données ODBC lors de la journalisation d’un site. L’attribut logExtFileFlags peut être une ou plusieurs des valeurs suivantes. Si vous spécifiez plusieurs valeurs, séparez-les par une virgule (,). Les valeurs par défaut sont Date , Time , ClientIP , UserName , ServerIP , Method , UriStem , UriQuery , TimeTaken , HttpStatus , Win32Status , ServerPort , UserAgent , HttpSubStatus , Referer .
|
||||||||||||||||||||||||||||||||||||||||||||||
logFormat |
Attribut d’énumération facultatif. Spécifie le format du fichier journal. L’attribut logFormat peut être l’une des valeurs suivantes. La valeur par défaut est W3C .
|
||||||||||||||||||||||||||||||||||||||||||||||
logSiteId |
Attribut booléen facultatif. Spécifie que le champ s-sitename contiendra le nom du site (false) ou l’ID de site (true). Si l’attribut « un fichier journal par propriété » est défini sur Site (la valeur par défaut), vous n’obtiendrez pas la colonne s-sitename dans le fichier journal par défaut, car la propriété « nom du fichier journal » contiendra l’ID de site à la place. Si l’attribut « un fichier journal par propriété » est défini sur Server , la colonne-s-sitename sera incluse dans le fichier journal par défaut.La valeur par défaut est True , ce qui signifie que le champ s-sitename contient l’ID de site. Pour enregistrer le nom du site à la place, définissez logSiteID sur False . |
||||||||||||||||||||||||||||||||||||||||||||||
logTargetW3C |
Attribut Indicateurs facultatifs. Spécifie si IIS utilisera le suivi des événements pour Windows (ETW) et/ou la journalisation des fichiers pour le traitement des événements IIS journalisés. ETW fournit une journalisation en temps réel et l’utilisation d’un fournisseur ETW et de mécanismes d’interrogation standard. La journalisation des fichiers stocke les données d’événement dans des fichiers texte que vous pouvez analyser pour accéder aux données de journalisation. Lorsque IIS utilise des fichiers journaux, HTTP.sys journalise les données directement dans des fichiers journaux texte une fois la transaction terminée. Lors de l’utilisation d’ETW, HTTP.sys envoie des données à ETW à l’aide du fournisseur iislogging, et le service LOGSVC gère les données de journal, notamment l’interrogation d’ETW pour les données, la collecte de données directement à partir de processus de travail et l’envoi des données à un fichier journal. L’attribut logTargetW3C peut avoir les valeurs suivantes. La valeur par défaut est File . Si File et ETW sont répertoriés pour logTargetW3C pour le site dans applicationHost.config, cela équivaut à sélectionner à la fois le fichier journal et l’événement ETW pour les paramètres du fichier journal du site dans le volet Journalisation dans le Gestionnaire IIS.
|
||||||||||||||||||||||||||||||||||||||||||||||
maxLogLineLength |
Attribut uint facultatif. Spécifie la longueur maximale d’une ligne dans un fichier journal. Cela vous permet de limiter la quantité de données accumulées par la journalisation et d’économiser de l’espace disque, en particulier lorsque vous ajoutez des champs de journalisation personnalisés. La plage est comprise entre 2 et 65 536. La valeur par défaut est 65536 . |
||||||||||||||||||||||||||||||||||||||||||||||
period |
Attribut d’énumération facultatif. Spécifie la fréquence à laquelle IIS crée un fichier journal. L’attribut de période peut être l’une des valeurs possibles suivantes. La valeur par défaut est Daily .
|
||||||||||||||||||||||||||||||||||||||||||||||
truncateSize |
Attribut int64 facultatif. Spécifie la taille maximale du fichier journal (en octets) après laquelle créer un nouveau fichier journal. Cette valeur s’applique uniquement lorsque MaxSize est choisi pour l’attribut de période. La taille de fichier minimale est 1 048 576 octets. Si cet attribut a pour valeur un nombre inférieur à 1 048 576 octets, la valeur par défaut est implicitement 1 048 576 octets. La valeur par défaut est 20971520 . |
Éléments enfants
Élément | Description |
---|---|
customFields |
Élément facultatif. Spécifie les paramètres de configuration d’une collection de champs personnalisés dans un journal W3C. |
Exemple Configuration
L’exemple de configuration suivant utilise l’attribut logExtFileFlags de l’élément <logFile>
pour spécifier les paramètres que IIS journalise pour un site web nommé Contoso. L’attribut période entraîne la création d’un fichier journal W3C toutes les heures ; l’attribut localTimeRollover spécifie que IIS utilise l’heure sur le serveur local pour déterminer quand créer et nommer un nouveau fichier journal.
<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>
Exemple de code
Les exemples suivants configurent la journalisation pour un site nommé Contoso. Chaque exemple active la journalisation du site et configure la journalisation de site pour générer un nouveau fichier journal quotidiennement. Ils configurent également IIS pour utiliser l’heure du serveur local pour générer les noms des fichiers journaux et déterminer quand générer de nouveaux fichiers journaux.
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
Remarque
Vous devez veiller à définir le paramètre commit sur apphost
quand vous utilisez AppCmd.exe pour configurer ces paramètres. Cela valide les paramètres de configuration dans la section d’emplacement appropriée dans le fichier 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