Procedura dettagliata: creazione di listener di log personalizzati (Visual Basic)
Questa procedura spiega come creare un listener di log personalizzato e configurarlo in modo che resti in ascolto dell'output dell'oggetto My.Application.Log
.
Introduzione
I listener di log devono ereditare dalla TraceListener classe.
Per creare il listener
Nell'applicazione creare una classe denominata
SimpleListener
che eredita da TraceListener.Public Class SimpleListener Inherits System.Diagnostics.TraceListener <Security.Permissions.HostProtection(Synchronization:=True)> Public Overloads Overrides Sub Write(ByVal message As String) MsgBox("Write: " & message) End Sub <Security.Permissions.HostProtection(Synchronization:=True)> Public Overloads Overrides Sub WriteLine(ByVal message As String) MsgBox("WriteLine: " & message) End Sub End Class
I metodi Write e WriteLine, richiesti dalla classe di base, chiamano
MsgBox
per visualizzare l'input.L'attributo HostProtectionAttribute viene applicato ai metodi Write e WriteLine in modo che i relativi attributi corrispondano ai metodi della classe di base. L'attributo HostProtectionAttribute consente all'host che esegue il codice di determinare se il codice espone la sincronizzazione con protezione host.
Nota
L'attributo HostProtectionAttribute ha effetto solo su applicazioni non gestite che ospitano Common Language Runtime e implementano la protezione host, ad esempio SQL Server.
Per assicurarsi che My.Application.Log
usi il listener di log, assegnare un nome sicuro all'assembly che contiene il listener di log.
La procedura seguente prevede alcuni semplici passaggi per la creazione di un assembly di listener di log con nome sicuro. Per altre informazioni, vedere Creazione e utilizzo degli assembly con nome sicuro.
Per assegnare un nome sicuro all'assembly di listener di log
Selezionare un progetto in Esplora soluzioni. Scegliere Proprietà dal menu Progetto.
Fare clic sulla scheda Firma .
Selezionare la casella Firma assembly .
Selezionare <Nuovo> dall'elenco a discesa Scegli un file chiave con nome sicuro.
Si aprirà la finestra di dialogo Crea chiave con nome sicuro .
Specificare un nome per il file di chiave nella casella Nome file di chiave.
Digitare una password nelle caselle Immettere la password e Conferma password.
Fare clic su OK.
Ricompilare l'applicazione.
Aggiungere il listener
Ora che l'assembly ha un nome sicuro è necessario determinare il nome sicuro del listener in modo che My.Application.Log
usi il listener di log.
Il formato di un tipo con nome sicuro è il seguente.
<nome tipo>, <nome assembly>, <numero versione>, <impostazioni cultura>, <nome sicuro>
Per determinare il nome sicuro del listener
Il codice seguente illustra come determinare il nome sicuro del tipo per
SimpleListener
.Public Sub DisplaySimpleListenerStrongName() Dim t As Type = GetType(SimpleListener) MsgBox(t.FullName & ", " & t.Assembly.FullName) End Sub
Il nome sicuro del tipo dipende dal progetto.
Con il nome sicuro è possibile aggiungere il listener alla raccolta di listener di log My.Application.Log
.
Per aggiungere il listener a My.Application.Log
Fare clic con il pulsante destro del mouse su app.config in Esplora soluzioni e scegliere Apri.
oppure
Se non è presente un file app.config:
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Nella finestra di dialogo Aggiungi nuovo elemento scegliere File di configurazione dell'applicazione.
Fare clic su Aggiungi.
Individuare la sezione
<listeners>
all'interno della sezione<source>
con l'attributoname
"DefaultSource" che si trova nella sezione<sources>
. La sezione<sources>
si trova nella sezione<system.diagnostics>
all'interno della sezione di primo livello<configuration>
.Aggiungere l'elemento seguente alla sezione
<listeners>
:<add name="SimpleLog" />
Individuare la sezione
<sharedListeners>
nella sezione<system.diagnostics>
all'interno della sezione di primo livello<configuration>
.Aggiungere l'elemento seguente alla sezione
<sharedListeners>
:<add name="SimpleLog" type="SimpleLogStrongName" />
Modificare il valore di
SimpleLogStrongName
in modo che sia il nome sicuro del listener.