Creazione e reindirizzamento del log IIS
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Avviso
Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere Criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Importante
Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Il modulo ASP.NET Core reindirizza su disco l'output della console stdout e stderr se sono impostati gli attributi stdoutLogEnabled
e stdoutLogFile
dell'elemento aspNetCore
. Le eventuali le cartelle nel percorso stdoutLogFile
vengono create dal modulo quando viene creato il file di log. Il pool di app deve avere accesso in scrittura al percorso in cui vengono scritti i log (usare IIS AppPool\{APP POOL NAME}
per fornire l'autorizzazione di scrittura, dove il segnaposto {APP POOL NAME}
è il nome del pool di app).
I log non vengono ruotati, a meno che non si verifichi il riciclo/riavvio del processo. È responsabilità del provider di servizi di hosting limitare lo spazio su disco usato dai log.
L'uso del log stdout è consigliato solo per la risoluzione dei problemi di avvio delle app durante l'hosting in IIS o quando si usa il supporto in fase di sviluppo per IIS con Visual Studio, non durante il debug locale e l'esecuzione dell'app con IIS Express.
Non usare il log stdout per scopi di registrazione generale delle app. Per la registrazione di routine in un'app ASP.NET Core, usare una libreria di registrazione che limita le dimensioni dei file di log e ne esegue la rotazione. Per altre informazioni, vedere Provider di registrazione di terze parti.
Un timestamp e l'estensione del file vengono aggiunti automaticamente al momento della creazione del file di log. Il nome del file di log è composto aggiungendo il timestamp, l'ID processo e l'estensione di file (.log
) all'ultimo segmento del stdoutLogFile
percorso (in stdout
genere ) delimitato da caratteri di sottolineatura. Se il stdoutLogFile
percorso termina con stdout
, un log per un'app con PID 1934 creato il 2/5/2018 alle 19:42:32 ha il nome stdout_20180205194132_1934.log
file .
Se stdoutLogEnabled
è false, gli errori che si verificano all'avvio dell'app vengono acquisiti ed emessi nel log eventi fino a 30 KB. Dopo l'avvio, tutti i log aggiuntivi vengono rimossi.
L'elemento di esempio aspNetCore
seguente configura la registrazione stdout nel percorso .\log\
relativo . Verificare che l'utente di AppPool abbia l'autorizzazione identity per scrivere nel percorso specificato.
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess">
</aspNetCore>
Quando si pubblica un'app per la distribuzione del servizio app Azure, Web SDK imposta il stdoutLogFile
valore su \\?\%home%\LogFiles\stdout
. La %home
variabile di ambiente è predefinita per le app ospitate da app Azure Servizio.
Per creare regole di filtro di registrazione, vedere la sezione Applicare le regole di filtro dei log nel codice della documentazione relativa alla registrazione di base di ASP.NET.
Per altre informazioni sui formati di percorso, vedere Formati di percorso dei file nei sistemi Windows.
Log di diagnostica avanzati
Il modulo ASP.NET Core può essere configurato per restituire log di diagnostica avanzata. Aggiungere l'elemento <handlerSettings>
all'elemento <aspNetCore>
in web.config
. L'impostazione di debugLevel
su TRACE
restituisce una maggior fedeltà dei dati diagnostici:
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
<handlerSetting name="debugLevel" value="FILE,TRACE" />
</handlerSettings>
</aspNetCore>
Tutte le cartelle nel percorso (logs
nell'esempio precedente) vengono create dal modulo quando viene creato il file di log. Il pool di app deve avere accesso in scrittura al percorso in cui vengono scritti i log (usare IIS AppPool\{APP POOL NAME}
per fornire l'autorizzazione di scrittura, dove il segnaposto {APP POOL NAME}
è il nome del pool di app).
I valori di livello debug (debugLevel
) possono includere sia il livello che il percorso.
Livelli (in ordine dal meno dettagliato al più dettagliato):
- ERROR
- AVVISO
- INFO
- TRACE
Posizioni (sono consentite più posizioni):
- CONSOLE
- EVENTLOG
- FILE
Le impostazioni del gestore possono essere specificate anche tramite le variabili di ambiente:
ASPNETCORE_MODULE_DEBUG_FILE
: percorso del file di log di debug. Impostazione predefinita:aspnetcore-debug.log
ASPNETCORE_MODULE_DEBUG
: impostazione del livello di debug.
Avviso
Non lasciare la registrazione del debug abilitata nella distribuzione per un tempo superiore a quello necessario alla risoluzione di problema. Le dimensioni del log non sono limitate. Se si lascia abilitato il log di debug, lo spazio disponibile su disco può esaurirsi e il server o il servizio app può registrare un arresto anomalo.
Per un esempio dell'elemento nel file, vedere Configurazione di ASP.NET Core Module con web.config
.web.config
aspNetCore