Champs personnalisés par défaut dans des fichiers journaux <customFields>
Vue d’ensemble
L’élément <customFields>
de l’élément <logFile>
spécifie les paramètres de configuration d’une collection de champs personnalisés par défaut dans un journal W3C.
IIS 8.5 vous permet de journaliser des champs personnalisés en plus de l’ensemble journalisé standard. Ces champs personnalisés peuvent inclure des données provenant d’en-têtes de requête, d’en-têtes de réponse ou de variables serveur. Pour journaliser ces champs, vous pouvez simplement définir des propriétés de configuration plutôt que de créer un module de journalisation personnalisé. Cette fonctionnalité est disponible uniquement au niveau du site. Le format du fichier journal doit être W3C pour ajouter des champs personnalisés.
Lorsqu’un champ personnalisé a été ajouté à l’ensemble standard, « _x » est ajouté au nom de fichier pour indiquer que le fichier journal contient un champ personnalisé. La quantité totale de données ajoutées dans les champs personnalisés ne peut pas dépasser 65 536 octets. IIS tronque les données si les données journalisées personnalisées dépassent cette quantité. La quantité maximale de données pouvant être ajoutées à un fichier journal dans un champ personnalisé est spécifiée par l’attribut maxCustomFieldLength.
Pour configurer un champ personnalisé, spécifiez le nom du champ, le nom de la source et le type de source. Vous pouvez placer des informations personnalisées dans une variable de serveur et consigner la variable de serveur. Une fois que vous avez sélectionné le type de source, vous pouvez sélectionner un nom source existant ou entrer un nouveau nom source.
Les champs personnalisés vous permettent de collecter des données utiles sur le processus et de les agréger aux journaux IIS. Dans un système contenant un équilibreur de charge, vous pouvez voir l’adresse IP de l’équilibreur de charge dans le journal mais vous pouvez enregistrer l’en-tête X-Forwarded-For dans un champ personnalisé afin de pouvoir connaître le demandeur d’origine. Vous pouvez enregistrer le temps de fonctionnement du processus pour voir combien de fois le processus a redémarré pendant la journée. Si la mémoire commence à être utilisée de manière excessive, vous pouvez déterminer à quel moment il a commencé à consommer de la mémoire, la page demandée et l’identifiant du client (ce qui est particulièrement utile si ce client fait quelque chose de malveillant).
Compatibilité
Version | Notes |
---|---|
IIS 10.0 | L’élément <customFields> n’a pas été modifié dans IIS 10.0. |
IIS 8.5 | L’élément <customFields> a été introduit dans IIS 8.5. |
IIS 8.0 | S/O |
IIS 7.5 | S/O |
IIS 7.0 | S/O |
IIS 6.0 | S/O |
Programme d’installation
L’élément <customFields>
est inclus dans l’installation par défaut d’IIS 8.5.
Procédure
Comment ajouter des champs personnalisés par défaut
Ouvrez le Gestionnaire des services Internet (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, sélectionnez le serveur.
Double-cliquez sur Journalisation dans la section IIS.
Dans la page d’accueil de journalisation , pourFormat, sélectionnez W3C.
Cliquez sur Sélectionner des champs.
Dans la boîte de dialogue Champs de journalisation W3C, cliquez surAjouter un champ.
Dans la boîte de dialogue Ajouter un champ personnalisé, entrez un nom dans le nom du champ (sans espaces) puis sélectionnez l’un des éléments suivants pour le type de source : en-tête de requête,en-tête de réponse ou variable serveur.
Dans Source, sélectionnez une source dans la liste ou entrez le nom d’une source personnalisée.
Cliquez sur OK puis cliquez à nouveau sur OK.
Dans le volet Actions, cliquez sur Appliquer.
Comment configurer la longueur maximale par défaut du champ personnalisé
Ouvrez le Gestionnaire des services Internet (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, sélectionnez le serveur, puis, dans la zone Gestion, double-cliquez sur Éditeur de configuration.
Dans l’Éditeur de configuration, pour la section, sélectionnez system.applicationHost, puis sélectionnez sites.
Cliquez sur siteDefaults.
Sélectionnez le site, développez logFile, développez customFields puis cliquez sur maxCustomFieldLength.
Pour maxCustomFieldLength, entrez la quantité maximale de données en octets qui peuvent être ajoutées à un fichier journal dans n’importe quel champ personnalisé.
Fermez l’Éditeur de collection puis, dans le volet Action, cliquez sur Appliquer.
Configuration
L’élément <customFields>
pour les paramètres par défaut est configuré sur le serveur.
Attributs
Attribut | Description |
---|---|
maxCustomFieldLength |
Attribut uint facultatif. Quantité maximale de données, en octets, qui peuvent être ajoutées à un fichier journal dans n’importe quel champ personnalisé. La plage est comprise entre 2 et 65 536. La valeur par défaut est 4096 . |
Éléments enfants
Élément | Description |
---|---|
add |
Élément facultatif. Spécifie les paramètres de configuration de champs personnalisés par défaut dans un journal W3C. |
Exemple Configuration
L’exemple de configuration suivant utilise l’élément customFields
et son élément enfant add
pour spécifier les paramètres de champ personnalisé par défaut pour les journaux W3C.
<siteDefaults>
<logFile logFormat="W3C" directory="%SystemDrive%\inetpub\logs\LogFiles" flushByEntryCountW3CLog="0">
<customFields>
<clear />
<add logFieldName="ContosoField" sourceName="ContosoSource" sourceType="ServerVariable" />
</customFields>
</logFile>
</siteDefaults>
Exemple de code
Les exemples suivants configurent des champs personnalisés par défaut pour un journal W3C.
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/sites /+"siteDefaults.logFile.customFields.[logFieldName='ContosoField',sourceName='ContosoSource',sourceType='ServerVariable']" /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");
ConfigurationElement siteDefaultsElement = sitesSection.GetChildElement("siteDefaults");
ConfigurationElement logFileElement = siteDefaultsElement.GetChildElement("logFile");
ConfigurationElement customFieldsElement = logFileElement.GetChildElement("customFields");
ConfigurationElementCollection customFieldsCollection = customFieldsElement.GetCollection();
ConfigurationElement addElement = customFieldsCollection.CreateElement("add");
addElement["logFieldName"] = @"ContosoField";
addElement["sourceName"] = @"ContosoSource";
addElement["sourceType"] = @"ServerVariable";
customFieldsCollection.Add(addElement);
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 sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
Dim siteDefaultsElement As ConfigurationElement = sitesSection.GetChildElement("siteDefaults")
Dim logFileElement As ConfigurationElement = siteDefaultsElement.GetChildElement("logFile")
Dim customFieldsElement As ConfigurationElement = logFileElement.GetChildElement("customFields")
Dim customFieldsCollection As ConfigurationElementCollection = customFieldsElement.GetCollection
Dim addElement As ConfigurationElement = customFieldsCollection.CreateElement("add")
addElement("logFieldName") = "ContosoField"
addElement("sourceName") = "ContosoSource"
addElement("sourceType") = "ServerVariable"
customFieldsCollection.Add(addElement)
serverManager.CommitChanges
End Sub
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 siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults");
var logFileElement = siteDefaultsElement.ChildElements.Item("logFile");
var customFieldsElement = logFileElement.ChildElements.Item("customFields");
var customFieldsCollection = customFieldsElement.Collection;
var addElement = customFieldsCollection.CreateNewElement("add");
addElement.Properties.Item("logFieldName").Value = "ContosoField";
addElement.Properties.Item("sourceName").Value = "ContosoSource";
addElement.Properties.Item("sourceType").Value = "ServerVariable";
customFieldsCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults")
Set logFileElement = siteDefaultsElement.ChildElements.Item("logFile")
Set customFieldsElement = logFileElement.ChildElements.Item("customFields")
Set customFieldsCollection = customFieldsElement.Collection
Set addElement = customFieldsCollection.CreateNewElement("add")
addElement.Properties.Item("logFieldName").Value = "ContosoField"
addElement.Properties.Item("sourceName").Value = "ContosoSource"
addElement.Properties.Item("sourceType").Value = "ServerVariable"
customFieldsCollection.AddElement(addElement)
adminManager.CommitChanges()
PowerShell
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/sites/siteDefaults/logFile/customFields" -name "." -value @{logFieldName='ContosoField';sourceName='ContosoSource';sourceType='ServerVariable'}