File di log per un file di log del sito <Web>
Panoramica
L'elemento <logFile>
dell'elemento <site>
contiene attributi che consentono di configurare la registrazione per un sito in IIS 7 e versioni successive.
Ad esempio, è possibile abilitare o disabilitare la registrazione, configurare il formato del file di log IIS, specificare le categorie di informazioni da archiviare nel file di log e modificare la directory in cui è archiviato il file di log. È anche possibile usare l'elemento <logFile>
per controllare la frequenza con cui IIS crea un nuovo file di log in base alle dimensioni del file di log o all'intervallo di tempo e alle dimensioni massime (in byte) che un file di log può diventare.
Per impostazione predefinita, IIS 7 e versioni successive usano il formato di file di log World Wide Web Consortium (W3C). È possibile modificare questa impostazione modificando l'attributo logFormat in IIS, NCSA o Custom.
Nota
La registrazione ODBC viene implementata come modulo di registrazione personalizzato in IIS 7 e versioni successive. Di conseguenza, l'abilitazione e la configurazione della registrazione ODBC in IIS 7 e versioni successive sono costituite da due azioni separate:
- Impostazione degli attributi di registrazione ODBC nell'elemento
<odbcLogging>
. Questi attributi specificano il nome dell'origine dati di sistema (DSN), il nome della tabella, il nome utente e la password per la connessione ODBC. - Impostazione degli attributi di registrazione personalizzati corretti nell'elemento
<logFile>
. Questi attributi devono impostare il formato del file di log su "Custom" e l'ID classe del plug-in del log personalizzato su "{FF16065B-DE82-11CF-BC0A-00AA006111E0}".
Per altre informazioni sulla registrazione ODBC, vedere l'elemento <odbcLogging>
.
È possibile definire le categorie di informazioni che IIS registra modificando l'attributo logExtFileFlags . I valori predefiniti sono Date
, Time
, ClientIP
UserName
, , ServerIP
, Method
HttpStatus
TimeTaken
UriQuery
UriStem
, ServerPort
UserAgent
Win32Status
HttpSubStatus
e .Referer
Nota
Se l'elemento <logFile>
è configurato sia <siteDefaults>
nella sezione che nella <site>
sezione per un sito specifico, la configurazione nella <site>
sezione viene usata per tale sito.
IIS 8.5 consente di registrare campi personalizzati oltre al set registrato standard. Il formato del file di log deve essere W3C per aggiungere campi personalizzati. Per altre informazioni, vedere customFields
.
Compatibilità
Versione | Note |
---|---|
IIS 10.0 | L'elemento <logFile> non è stato modificato in IIS 10.0. |
IIS 8,5 | Aggiunta dell'attributo flushByEntryCountW3CLog per specificare il numero di eventi da archiviare nel buffer prima che vengano scaricati nel file di log. Aggiunta dell'attributo logTargetW3C per specificare la modalità di elaborazione degli eventi IIS registrati. Aggiunta dell'attributo maxLogLineLength per specificare la lunghezza massima di una riga in un file di log. Aggiunta dell'elemento <customFields> figlio. |
IIS 8,0 | L'attributo logSiteId è stato aggiunto per specificare il contenuto del campo -sitename e referer il flag è stato aggiunto al valore predefinito dell'attributo logExtFileFlags . |
IIS 7,5 | L'elemento <logFile> non è stato modificato in IIS 7.5. |
IIS 7.0 | L'elemento <logFile> dell'elemento <site> è stato introdotto in IIS 7.0. |
IIS 6.0 | L'elemento <logFile> sostituisce le sezioni delle proprietà di registrazione nell'oggetto metabase IIS 6.0 IIsWebService . |
Installazione
L'elemento <logFile>
è incluso nell'installazione predefinita di IIS 7 e versioni successive.
Procedure
Come modificare le impostazioni di registrazione per un sito
Aprire Gestione Internet Information Services (IIS):
Se si usa Windows Server 2012 o Windows Server 2012 R2:
- Sulla barra delle applicazioni fare clic su Server Manager, scegliere Strumenti, quindi fare clic su Gestione Internet Information Services (IIS).
Se si usa Windows 8 o Windows 8.1:
- Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
- Fare clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
Se si usa Windows Server 2008 o Windows Server 2008 R2:
- Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione, quindi fare clic su Gestione Internet Information Services (IIS).
Se si usa Windows Vista o Windows 7:
- Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
- Fare doppio clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
Nel riquadro Connessioni espandere il nome del server, espandere Siti e quindi fare clic sul sito Web in cui si vuole configurare la registrazione.
Nel riquadro Home fare doppio clic su Registrazione.
Nel riquadro Registrazione selezionare il formato del file di log nella casella Formato , quindi digitare il percorso della directory in cui archiviare i file di log nella casella Directory o fare clic su Sfoglia per scegliere la directory in cui archiviare i file di log.
Se si sceglie di usare il formato di file di log W3C:
- Fare clic su Seleziona campi per scegliere i tipi di informazioni da registrare.
- Nella finestra di dialogo Campi registrazione W3C selezionare le caselle di controllo per le opzioni che si desidera registrare, deselezionare le caselle di controllo per le opzioni che non si desidera registrare e quindi fare clic su OK.
Come configurare la registrazione di file o ETW per i log W3C
Aprire Gestione Internet Information Services (IIS):
Se si usa Windows Server 2012 R2:
- Sulla barra delle applicazioni fare clic su Server Manager, scegliere Strumenti, quindi fare clic su Gestione Internet Information Services (IIS).
Se si usa Windows 8.1:
- Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
- Fare clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
Nel riquadro Connessioni espandere il nome del server, espandere Siti e quindi selezionare un sito.
Nel riquadro home del sito fare doppio clic su Registrazione.
Nella home page Registrazione selezionare Solo file di log, solo evento ETW o File di log e evento ETW.
Come configurare lo scaricamento di un log W3C in base al numero di voci
Aprire Gestione Internet Information Services (IIS):
Se si usa Windows Server 2012 R2:
- Sulla barra delle applicazioni fare clic su Server Manager, scegliere Strumenti, quindi fare clic su Gestione Internet Information Services (IIS).
Se si usa Windows 8.1:
- Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
- Fare clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
Nel riquadro Connessioni espandere il server e quindi fare doppio clic su Editor di configurazione.
Nell'Editor di configurazione, per Sezione espandere
system.applicationHost
e quindi selezionare siti.Fare clic su (Raccolta) e quindi sui puntini di sospensione.
Selezionare il sito da configurare e quindi espandere logFile.
Per flushByEntryCountW3Clog, immettere il numero di eventi da archiviare nel buffer prima che vengano scaricati nel file di log.
Nel riquadro Azione fare clic su Applica.
Come configurare la lunghezza massima della riga del log
Aprire Gestione Internet Information Services (IIS):
Se si usa Windows Server 2012 R2:
- Sulla barra delle applicazioni fare clic su Server Manager, scegliere Strumenti, quindi fare clic su Gestione Internet Information Services (IIS).
Se si usa Windows 8.1:
- Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
- Fare clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
Nel riquadro Connessioni espandere il server e quindi fare doppio clic su Editor di configurazione.
Nell'Editor di configurazione, per Sezione espandere
system.applicationHost
e quindi selezionare siti.Fare clic su (Raccolta) e quindi sui puntini di sospensione.
Selezionare il sito da configurare e quindi espandere logFile.
Per maxLogLineLength immettere il numero massimo di byte in una singola riga di un file di log.
Nel riquadro Azione fare clic su Applica.
Configurazione
Attributi
Attributo | Descrizione | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
customLogPluginClsid |
Attributo stringa facoltativo. Specifica l'ID classe di oggetti COM (CLSID) o GLI ID, in ordine di precedenza, per i moduli personalizzati. |
||||||||||||||||||||||||||||||||||||||||||||||
directory |
Attributo stringa facoltativo. Specifica la directory di registrazione in cui vengono archiviati il file di log e i file di supporto correlati alla registrazione. Il valore predefinito è %SystemDrive%\inetpub\logs\LogFiles . |
||||||||||||||||||||||||||||||||||||||||||||||
enabled |
Attributo booleano facoltativo. Specifica se la registrazione è abilitata (true) o disabilitata (false) per un sito. Nota: Gli errori ASP e ODBC non vengono registrati nei file di log iis. Il valore predefinito è true . |
||||||||||||||||||||||||||||||||||||||||||||||
flushByEntryCountW3CLog |
Attributo uint facoltativo. Specifica il numero di eventi da archiviare nel buffer prima che vengano scaricati nel file di log. Un numero inferiore causerà lo scaricamento più rapido degli eventi, a costo delle prestazioni in seguito a un numero maggiore di operazioni su disco. Ridurre questo valore per la risoluzione dei problemi in tempo reale, aumentarne le prestazioni. Il valore 0 specifica che lo scaricamento si verificherà al massimo 64k predefinito.Il valore predefinito è 0 . |
||||||||||||||||||||||||||||||||||||||||||||||
localTimeRollover |
Attributo booleano facoltativo. Specifica se viene creato un nuovo file di log in base all'ora locale o all'ora UTC (Coordinated Universal Time), precedentemente denominata Ora di Greenwich (GMT). Se false, viene creato un nuovo file di log in base all'ora UTC. Nota: Indipendentemente dall'impostazione, il timestamp per ogni record di log di registrazione estesa W3C è basato su UTC. Il valore predefinito è false . |
||||||||||||||||||||||||||||||||||||||||||||||
logExtFileFlags |
Attributo flag facoltativo. Specifica le categorie di informazioni scritte nel file di log (quando si utilizza il formato di file di log esteso W3C) o nell'origine dati ODBC durante la registrazione degli eventi per un sito. L'attributo logExtFileFlags può essere uno o più dei valori seguenti. Se si specificano più valori, separarli con una virgola (,). I valori predefiniti sono Date , , ClientIP Time UserName , , ServerIP , Method , UriStem , UriQuery TimeTaken UserAgent HttpStatus Referer Win32Status ServerPort HttpSubStatus .
|
||||||||||||||||||||||||||||||||||||||||||||||
logFormat |
Attributo di enumerazione facoltativo. Specifica il formato del file di log. L'attributo logFormat può essere uno dei valori seguenti. Il valore predefinito è W3C .
|
||||||||||||||||||||||||||||||||||||||||||||||
logSiteId |
Attributo booleano facoltativo. Specifica che il campo s-sitename conterrà il nome del sito (false) o l'ID del sito (true). Se il file di log uno per ogni proprietà è impostato su Site (impostazione predefinita predefinita), non si otterrà la colonna s-sitename nel file di log per impostazione predefinita, perché la proprietà nome file di log conterrà invece l'ID del sito. Se il file di log uno per proprietà è impostato su Server , la colonna nome-sito-s verrà inclusa nel file di log per impostazione predefinita.Il valore predefinito è True , significa che il campo s-sitename contiene l'ID sito. Per registrare invece il nome del sito, impostare logSiteID su False . |
||||||||||||||||||||||||||||||||||||||||||||||
logTargetW3C |
Attributo Flag facoltativo. Specifica se IIS userà Traccia eventi per Windows (ETW) e/o la registrazione dei file per l'elaborazione degli eventi IIS registrati. ETW fornisce la registrazione in tempo reale e l'uso di un provider ETW e dei meccanismi di query standard. La registrazione file archivia i dati degli eventi nei file di testo che è possibile analizzare per accedere ai dati di registrazione. Quando IIS usa i file di log, HTTP.sys registra i dati direttamente nei file di log di testo dopo il completamento della transazione. Quando si usa ETW, HTTP.sys invia i dati in ETW usando il provider iislogging e il servizio LOGSVC gestisce i dati di log, inclusa l'esecuzione di query su ETW per i dati, la raccolta dei dati direttamente dai processi di lavoro e l'invio dei dati a un file di log. L'attributo logTargetW3C può avere i valori possibili seguenti. Il valore predefinito è File . File Se entrambi e ETW sono elencati per logTargetW3C il sito in applicationHost.config, equivale a selezionare sia il file di log che l'evento ETW per le impostazioni del file di log del sito nel riquadro Registrazione in Gestione IIS.
|
||||||||||||||||||||||||||||||||||||||||||||||
maxLogLineLength |
Attributo uint facoltativo. Specifica la lunghezza massima di una riga in un file di log. In questo modo è possibile limitare la quantità di dati accumulati tramite la registrazione e risparmiare spazio su disco, soprattutto quando si aggiungono campi di registrazione personalizzati. L'intervallo è compreso tra 2 e 65.536. Il valore predefinito è 65536 . |
||||||||||||||||||||||||||||||||||||||||||||||
period |
Attributo enumerazione facoltativo. Specifica la frequenza con cui IIS crea un nuovo file di log. L'attributo period può essere uno dei valori possibili seguenti. Il valore predefinito è Daily .
|
||||||||||||||||||||||||||||||||||||||||||||||
truncateSize |
Attributo facoltativo int64. Specifica la dimensione massima del file di log (in byte) dopo la quale creare un nuovo file di log. Questo valore è applicabile solo quando MaxSize viene scelto per l'attributo period. La dimensione minima del file è pari a 1.048.576 byte. Se questo attributo è impostato su un valore minore di 1.048.576 byte, il valore predefinito viene assunto in modo implicito come 1.048.576 byte. Il valore predefinito è 20971520 . |
Elementi figlio
Elemento | Descrizione |
---|---|
customFields |
Elemento facoltativo. Specifica le impostazioni di configurazione per una raccolta di campi personalizzati in un log W3C. |
Esempio di configurazione
Nell'esempio di configurazione seguente viene usato l'attributo logExtFileFlags dell'elemento <logFile>
per specificare le impostazioni che IIS registra per un sito Web denominato Contoso. L'attributo periodo causa la creazione di un nuovo file di log W3C ogni ora; l'attributo localTimeRollover specifica che IIS usa il tempo nel server locale per determinare quando creare e assegnare un nome a un nuovo file di log.
<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>
Codice di esempio
Gli esempi seguenti configurano la registrazione per un sito denominato Contoso. Ogni esempio abilita la registrazione per il sito e configura la registrazione del sito per generare un nuovo file di log su base giornaliera. Configura inoltre IIS per usare il tempo nel server locale per generare i nomi dei file di log e determinare quando generare nuovi file di log.
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
Nota
È necessario assicurarsi di impostare il parametro commit su apphost
quando si usa AppCmd.exe per configurare queste impostazioni. Questa operazione esegue il commit delle impostazioni di configurazione nella sezione percorso appropriata nel file di 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