Utilizzo dei log applicazione in Visual BasicWorking with Application Logs in Visual Basic

Gli oggetti My.Application.Log e My.Log consentono di scrivere facilmente nei log le informazioni di registrazione e di traccia.The My.Application.Log and My.Log objects make it easy to write logging and tracing information to logs.

Modalità di registrazione dei messaggiHow Messages are Logged

Viene verificata innanzitutto la gravità del messaggio con la proprietà Switch della proprietà TraceSource del log.First, the severity of the message is checked with the Switch property of the log's TraceSource property. Per impostazione predefinita, solo i messaggi con il livello di gravità "Informazione" o un livello superiore vengono inviati ai listener di traccia, specificati nella raccolta TraceListener del log.By default, only messages of severity "Information" and higher are passed on to the trace listeners, specified in the log's TraceListener collection. Ogni listener confronta quindi la gravità del messaggio con la proprietà Switch del listener.Then, each listener compares the severity of the message to the listener's Switch property. Se la gravità del messaggio è abbastanza elevata, il listener scrive il messaggio.If the message's severity is high enough, the listener writes out the message.

Il diagramma seguente mostra il modo in cui un messaggio scritto nel metodo WriteEntry viene inviato ai metodi WriteLine dei listener di traccia del log:The following diagram shows how a message written to the WriteEntry method gets passed to the WriteLine methods of the log's trace listeners:

Diagramma che illustra una chiamata a My Log.

È possibile modificare il comportamento del log e dei listener di traccia modificando il file di configurazione dell'applicazione.You can change the behavior of the log and the trace listeners by changing the application's configuration file. Il diagramma seguente mostra la corrispondenza tra le parti del log e il file di configurazione.The following diagram shows the correspondence between the parts of the log and the configuration file.

Diagramma che illustra la configurazione di My Log.

Posizione di registrazione dei messaggiWhere Messages are Logged

Se l'assembly non contiene un file di configurazione, gli oggetti My.Application.Log e My.Log scrivono nell'output di debug dell'applicazione, tramite la classe DefaultTraceListener .If the assembly has no configuration file, the My.Application.Log and My.Log objects write to the application's debug output (through the DefaultTraceListener class). Inoltre, l'oggetto My.Application.Log scrive nel file di log dell'assembly, tramite la classe FileLogTraceListener, mentre l'oggetto My.Log scrive nell'output della pagina Web ASP.NET, tramite la classe WebPageTraceListener.In addition, the My.Application.Log object writes to the assembly's log file (through the FileLogTraceListener class), while the My.Log object writes to the ASP.NET Web page's output (through the WebPageTraceListener class).

L'output di debug può essere visualizzato nella finestra Output di Visual Studio quando si esegue l'applicazione in modalità di debug.The debug output can be viewed in the Visual Studio Output window when running your application in debug mode. Per aprire la finestra Output , scegliere Finestre dal menu Debug, quindi fare clic su Output.To open the Output window, click the Debug menu item, point to Windows, and then click Output. Nella finestra Output selezionare Debug dall'elenco Mostra output di .In the Output window, select Debug from the Show output from box.

Per impostazione predefinita, My.Application.Log scrive il file di log nel percorso dei dati applicazione dell'utente.By default, My.Application.Log writes the log file in the path for the user's application data. È possibile ottenere il percorso dalla proprietà FullLogFileName dell'oggetto DefaultFileLogWriter .You can get the path from the FullLogFileName property of the DefaultFileLogWriter object. Il formato del percorso è il seguente:The format of that path is as follows:

BasePath\CompanyName\ProductName\ProductVersion

Di seguito è riportato un tipico valore per BasePath .A typical value for BasePath is as follows.

C:\Documents and Settings\`username`\Dati applicazioniC:\Documents and Settings\username\Application Data

I valori di CompanyName, ProductNamee ProductVersion provengono dalle informazioni sull'assembly dell'applicazione.The values of CompanyName, ProductName, and ProductVersion come from the application's assembly information. Il formato del nome del file di log è NomeAssembly.log, dove NomeAssembly è il nome file dell'assembly senza estensione.The form of the log file name is AssemblyName.log, where AssemblyName is the file name of the assembly without the extension. Se sono necessari più file di log, ad esempio se il log originale non è disponibile quando l'applicazione prova a scrivere nel log, il formato del nome del file di log sarà NomeAssembly-iteration.log, dove iteration è un Integer.If more than one log file is needed, such as when the original log is unavailable when the application attempts to write to the log, the form for the log file name is AssemblyName-iteration.log, where iteration is a positive Integer.

È possibile eseguire l'override del comportamento predefinito aggiungendo o modificando i file di configurazione del computer e dell'applicazione.You can override the default behavior by adding or changing the computer's and the application's configuration files. Per altre informazioni, vedere Procedura dettagliata: Modifica della posizione di inserimento delle informazioni con My.Application.Log.For more information, see Walkthrough: Changing Where My.Application.Log Writes Information.

Configurazione delle impostazioni del logConfiguring Log Settings

L'oggetto Log contiene un'implementazione predefinita che funziona senza il file di configurazione dell'applicazione, ovvero app.config. Per modificare le impostazioni predefinite, è necessario aggiungere un file di configurazione con le nuove impostazioni.The Log object has a default implementation that works without an application configuration file, app.config. To change the defaults, you must add a configuration file with the new settings. Per altre informazioni, vedere Procedura dettagliata: Filtro dell'output di My.Application.Log.For more information, see Walkthrough: Filtering My.Application.Log Output.

Le sezioni della configurazione del log si trovano nel nodo <system.diagnostics> all'interno del nodo principale <configuration> del file app.config.The log configuration sections are located in the <system.diagnostics> node in the main <configuration> node of the app.config file. Le informazioni del log vengono definite in diversi nodi:Log information is defined in several nodes:

  • I listener per l'oggetto Log vengono definiti nel nodo <sources> denominato DefaultSource.The listeners for the Log object are defined in the <sources> node named DefaultSource.

  • Il filtro della gravità per l'oggetto Log viene definito nel nodo <switches> denominato DefaultSwitch.The severity filter for the Log object is defined in the <switches> node named DefaultSwitch.

  • I listener di log vengono definiti nel nodo <sharedListeners> .The log listeners are defined in the <sharedListeners> node.

Esempi dei nodi <sources>, <switches>e <sharedListeners> sono illustrati nel codice seguente:Examples of <sources>, <switches>, and <sharedListeners> nodes are shown in the following code:

<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 distribuzioneChanging Log Settings after Deployment

Quando si sviluppa un'applicazione, le relative impostazioni di configurazione vengono archiviate nel file app.config, come illustrato negli esempi precedenti.When you develop an application, its configuration settings are stored in the app.config file, as shown in the examples above. Dopo aver distribuito l'applicazione, è ancora possibile configurare il log modificando il file di configurazione.After you deploy your application, you can still configure the log by editing the configuration file. In un'applicazione basata su Windows, il nome di questo file è NomeApplicazione.exe.config e il file deve risiedere nella stessa cartella del file eseguibile.In a Windows-based application, this file's name is applicationName.exe.config, and it must reside in the same folder as the executable file. In caso di applicazioni Web si tratta del file Web.config associato al progetto.For a Web application, this is the Web.config file associated with the project.

Quando l'applicazione esegue il codice che crea un'istanza di una classe per la prima volta, viene verificata la presenza di informazioni sull'oggetto nel file di configurazione.When your application executes the code that creates an instance of a class for the first time, it checks the configuration file for information about the object. Per l'oggetto Log , questa operazione viene eseguita la prima volta che si accede all'oggetto Log .For the Log object, this happens the first time the Log object is accessed. Il file di configurazione viene esaminato dal sistema solo una volta per ogni oggetto, ovvero la prima volta che l'oggetto viene creato dall'applicazione.The system examines the configuration file only once for any particular object—the first time your application creates the object. Per rendere effettive le modifiche è necessario quindi riavviare l'applicazione.Therefore, you may need to restart the application for the changes to take effect.

In un'applicazione distribuita, il codice di traccia viene abilitato riconfigurando gli oggetti opzione prima che l'applicazione venga avviata.In a deployed application, you enable trace code by reconfiguring switch objects before your application starts. In genere, questo implica l'attivazione e la disattivazione degli oggetti opzione o la modifica dei livelli di traccia, quindi il riavvio dell'applicazione.Typically, this involves turning the switch objects on and off or by changing the tracing levels, and then restarting your application.

Considerazioni sulla sicurezzaSecurity Considerations

Durante la scrittura di dati nel log tenere presente quanto segue:Consider the following when writing data to the log:

  • Assicurarsi che siano fornite tutte le informazioni utente.Avoid leaking user information. Assicurarsi che nel log dell'applicazione vengano scritte solo informazioni approvate.Ensure that your application writes only approved information to the log. Ad esempio, il log dell'applicazione può contenere i nomi degli utenti ma non le password.For example, it may be acceptable for the application log to contain user names, but not user passwords.

  • Proteggere le posizioni del log.Make log locations secure. Tutti i log contenenti informazioni potenzialmente riservate devono essere archiviati in una posizione sicura.Any log that contains potentially sensitive information should be stored in a secure location.

  • Evitare informazioni fuorvianti.Avoid misleading information. In generale, l'applicazione deve convalidare tutti i dati immessi da un utente prima di poterli usare.In general, your application should validate all data entered by a user before using that data. Questo vale anche per la scrittura dei dati nel log dell'applicazione.This includes writing data to the application log.

  • Evitare Denial of Service.Avoid denial of service. Se nel log dell'applicazione viene scritta una quantità eccessiva di informazioni, il log potrebbe riempirsi o potrebbe essere difficile trovare le informazioni importanti.If your application writes too much information to the log, it could fill the log or make finding important information difficult.

Vedere ancheSee also