Condividi tramite


Lavorare con i log delle applicazioni in Visual Basic

Gli oggetti My.Application.Log e My.Log semplificano la scrittura delle informazioni di registrazione e tracciamento nei registri.

Modalità di registrazione dei messaggi

In primo luogo, la gravità del messaggio viene controllata con la proprietà Switch della proprietà TraceSource del log. Per impostazione predefinita, solo i messaggi con livello di gravità pari a "Informazioni" o superiore vengono inoltrati ai listener di traccia, specificati nella raccolta del TraceListener log. Ogni listener confronta quindi la gravità del messaggio con la proprietà Switch del listener. Se la gravità del messaggio è sufficientemente elevata, l'ascoltatore registra il messaggio.

Il diagramma seguente mostra come un messaggio scritto nel WriteEntry metodo viene passato ai WriteLine metodi dei listener di traccia del log:

Diagramma che mostra la mia chiamata di log.

È possibile modificare il comportamento del log e dei listener di traccia modificando il file di configurazione dell'applicazione. Il diagramma seguente illustra la corrispondenza tra le parti del log e il file di configurazione.

Diagramma che mostra la configurazione del log personale.

Posizione in cui vengono registrati i messaggi

Se l'assembly non ha un file di configurazione, gli oggetti My.Application.Log e My.Log scrivono nell'output di debug dell'applicazione (tramite la classe DefaultTraceListener). Inoltre, l'oggetto My.Application.Log scrive nel file di log dell'assembly (tramite la FileLogTraceListener classe ), mentre l'oggetto scrive nell'output My.Log della pagina Web ASP.NET (tramite la WebPageTraceListener classe ).

L'output di debug può essere visualizzato nella finestra Output di Visual Studio quando si esegue l'applicazione in modalità di debug. Per aprire la finestra Output , fare clic sulla voce di menu Debug , scegliere Windows e quindi fare clic su Output. Nella finestra Output selezionare Debug nella casella Mostra output da .

Per impostazione predefinita, My.Application.Log scrive il file di log nel percorso dei dati dell'applicazione dell'utente. È possibile ottenere il percorso dalla FullLogFileName proprietà dell'oggetto DefaultFileLogWriter . Il formato di tale percorso è il seguente:

BasePath\CompanyName\ProductName\ProductVersion

Un valore tipico per BasePath è il seguente.

C:\Documenti e impostazioni\username\Dati applicazione

I valori di CompanyName, ProductNamee ProductVersion provengono dalle informazioni sull'assembly dell'applicazione. Il formato del nome del file di log è AssemblyName.log, dove AssemblyName è il nome file dell'assembly senza l'estensione. Se sono necessari più file di log, come quando il log originale non è disponibile mentre l'applicazione tenta di scrivere nel log, il formato del nome del file di log è AssemblyName-iterazione.log, dove iteration è un valore positivoInteger.

È possibile eseguire l'override del comportamento predefinito aggiungendo o modificando i file di configurazione del computer e dell'applicazione. Per altre informazioni, vedere Procedura dettagliata: Modifica della posizione in cui My.Application.Log scrive informazioni.

Configurazione delle impostazioni del log

L'oggetto Log ha un'implementazione predefinita che funziona senza un file di configurazione dell'applicazione, app.config. Per modificare le impostazioni predefinite, è necessario aggiungere un file di configurazione con le nuove impostazioni. Per altre informazioni, vedere Procedura dettagliata: Filtro dell'output my.application.log.

Le sezioni di configurazione del log <system.diagnostics> si trovano nel nodo principale <configuration> del file app.config. Le informazioni sui log sono definite in diversi nodi:

  • I listener per l'oggetto Log vengono definiti nel <sources> nodo denominato DefaultSource.

  • Il filtro di gravità per l'oggetto Log viene definito nel <switches> nodo denominato DefaultSwitch.

  • I listener di log sono definiti nel <sharedListeners> nodo.

Gli esempi di nodi <sources>, <switches>, e <sharedListeners> sono illustrati nel codice seguente.

<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 relative impostazioni di configurazione vengono archiviate nel file app.config, come illustrato negli esempi precedenti. Dopo aver distribuito l'applicazione, è comunque possibile configurare il log modificando il file di configurazione. In un'applicazione basata su Windows, il nome di questo file è applicationName.exe.confige deve risiedere nella stessa cartella del file eseguibile. Per un'applicazione Web, si tratta del file Web.config associato al progetto.

Quando l'applicazione esegue il codice che crea un'istanza di una classe per la prima volta, verifica la presenza di informazioni sull'oggetto nel file di configurazione. Per l'oggetto Log , si verifica la prima volta che si accede all'oggetto Log . Il sistema esamina il file di configurazione una sola volta per qualsiasi oggetto specifico, la prima volta che l'applicazione crea l'oggetto. Potrebbe pertanto essere necessario riavviare l'applicazione affinché le modifiche siano effettive.

In un'applicazione distribuita si abilita il codice di traccia riconfigurando gli oggetti switch prima dell'avvio dell'applicazione. In genere, ciò comporta l'attivazione e la disattivazione degli oggetti switch o modificando i livelli di traccia e quindi riavviando l'applicazione.

Considerazioni sulla sicurezza

Quando si scrivono dati nel log, tenere presente quanto segue:

  • Evitare la perdita di informazioni utente. Assicurarsi che l'applicazione scriva solo le informazioni approvate nel log. Ad esempio, può essere accettabile che il log applicazioni contenga nomi utente, ma non password utente.

  • Rendere sicure le posizioni dei log. Qualsiasi log che contiene informazioni potenzialmente riservate deve essere archiviato in una posizione sicura.

  • Evitare informazioni fuorvianti. In generale, l'applicazione deve convalidare tutti i dati immessi da un utente prima di usare tali dati. Ciò include la scrittura di dati nel log applicazioni.

  • Evitare la negazione del servizio. Se l'applicazione scrive troppe informazioni nel log, potrebbe riempire il log o rendere difficile trovare informazioni importanti.

Vedere anche