Utilizzo dei log applicazione in Visual Basic
Gli oggetti My.Applicaton.Log e My.Log consentono di scrivere facilmente informazioni sulla registrazione e la tracciatura nei log.
Modalità di registrazione dei messaggi
Viene innanzitutto verificata la severità del messaggio con la proprietà Switch della proprietà TraceSource del log. Per impostazione predefinita, solo i messaggi con livello di gravità "Informazione" e superiore vengono inviati ai listener di traccia, specificati nell'insieme TraceListener del log. Quindi, nei singoli listener la gravità del messaggio viene confrontata con la proprietà Switch del listener. Se la gravità del messaggio è abbastanza elevata, il messaggio viene scritto dal listener.
Nel seguente diagramma viene mostrato il modo in cui un messaggio scritto nel metodo WriteEntry viene inviato ai metodi WriteLine dei listener di traccia del log:
È possibile modificare il comportamento del log e i listener di traccia modificando il file di configurazione dell'applicazione. Nel seguente diagramma viene mostrata la corrispondenza tra le parti del log e il file di configurazione.
Posizione di registrazione dei messaggi
Se l'assembly non è dotato di file di configurazione, gli oggetti My.Application.Log e My.Log scrivono sull'output di debug dell'applicazione, tramite la classe DefaultTraceListener. Inoltre, l'oggetto My.Application.Log scrive nel file di log dell'assembly, tramite la classe FileLogTraceListener, mentre l'oggetto My.Log scrive sull'output della pagina Web ASP.NET, tramite la classe WebPageTraceListener.
L'output di debug può essere visualizzato nella finestra Output di Visual Studio durante l'esecuzione dell'applicazione in modalità di debug. Per aprire la finestra di output, scegliere Finestre dal menu Debug, quindi Output. Nella finestra di output selezionare Debug dall'elenco Mostra output di.
Per impostazione predefinita, My.Application.Log scrive il file di log nel percorso dei dati delle applicazioni dell'utente. È possibile ottenere il percorso dalla proprietà FullLogFileName dell'oggetto DefaultFileLogWriter. Il formato del percorso è il seguente:
BasePath\CompanyName\ProductName\ProductVersion
Di seguito è riportato un tipico valore per BasePath.
C:\Documents and Settings\username\Dati applicazioni
I valori di CompanyName, ProductName e ProductVersion provengono dalle informazioni sugli assembly dell'applicazione. Il formato del nome del file di log è NomeAssembly.log, dove NomeAssembly è il nome file dell'assembly senza estensione. Se sono necessari più file di log, ad esempio se il log originale non è disponibile quando l'applicazione tenta di scrivere nel log, il formato del nome del file di log sarà NomeAssembly-iteration.log, dove iteration è un Integer positivo.
È possibile eseguire l'override del comportamento predefinito aggiungendo o modificando i file di configurazione del computer e dell'applicazione. Per ulteriori informazioni, vedere Procedura dettagliata: modifica della posizione di inserimento delle informazioni con My.Application.Log (Visual Basic).
Configurazione delle impostazioni del log
L'oggetto Log dispone di un'implementazione predefinita che funziona senza un file di configurazione dell'applicazione, ovvero app.config. Per modificare le impostazioni predefinite, è necessario aggiungere un file di configurazione con le nuove impostazioni. Per ulteriori informazioni, vedere Procedura dettagliata: filtro dell'output di My.Application.Log.
Le sezioni della configurazione del log si trovano nel nodo <system.diagnostics> nel nodo <configuration> principale del file app.config. Le informazioni del log vengono definite in molti nodi:
I listener per l'oggetto Log sono definiti nel nodo <sources> denominato DefaultSource.
Il filtro della gravità per l'oggetto Log viene definito nel nodo <switches> denominato DefaultSwitch.
I listener di log sono definiti nel nodo <sharedListeners>.
Esempi di nodi <sources>, <switches> e <sharedListeners> sono riportati nel seguente codice:
<configuration>
<system.diagnostics>
<sources>
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"
/>
</sharedListeners>
</system.diagnostics>
</configuration>
Modifica delle impostazioni del log dopo la distribuzione
Quando si sviluppa un'applicazione, le impostazioni di configurazione vengono memorizzate nel file app.config, come mostrato negli esempi sopra riportati. Una volta distribuita l'applicazione, è possibile configurare il log modificando il file di configurazione. In un'applicazione basata su Windows, il nome di questo file è nomeApplicazione.exe.config e il file deve essere contenuto nella stessa cartella del file eseguibile. In caso di applicazioni Web si tratta del file Web.config associato al progetto.
Quando nell'applicazione viene eseguito il codice per la creazione di un'istanza di una classe per la prima volta, viene verificata la presenza di informazioni sull'oggetto nel file di configurazione. Per l'oggetto Log, questa operazione viene eseguita la prima volta che si accede all'oggetto Log. Il file di configurazione viene esaminato dal sistema solo una volta per ogni oggetto, la prima volta che l'oggetto viene creato dall'applicazione. Quindi, per rendere effettive le modifiche è necessario riavviare l'applicazione.
In un'applicazione distribuita, il codice di traccia viene attivato riconfigurando gli oggetti opzione prima che l'applicazione venga avviata. In genere questo implica l'attivazione e la disattivazione degli oggetti opzione o la modifica dei livelli di tracciatura, quindi il riavvio dell'applicazione.
Considerazioni sulla sicurezza
Durante la scrittura di dati nel log, si consideri quanto segue:
Assicurarsi che siano fornite tutte le informazioni utente. Assicurarsi che nel log vengano scritte dall'applicazione solo informazioni approvate. Ad esempio, il registro applicazioni può contenere nomi utente ma non password utente.
Proteggere le posizioni del log. Tutti i log contenenti informazioni potenzialmente riservate devono essere memorizzati in una posizione protetta.
Evitare informazioni fuorvianti. In generale, nell'applicazione devono essere convalidati tutti i dati immessi da un utente prima di utilizzarli. Questa norma è valida anche per la scrittura dei dati nel registro applicazioni.
Evitare Denial of Service. Se nel log viene scritta una quantità eccessiva di informazioni dall'applicazione, il log potrebbe risultare pieno o potrebbe essere difficile individuare informazioni importanti.
Vedere anche
Riferimenti
Microsoft.VisualBasic.Logging.Log
Concetti
Registrazione di informazioni relative all'applicazione (Visual Basic)