Condividi tramite


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 stdoutgenere ) 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.logfile .

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