.net - log - ¿Cómo controla el nivel de un detector de trazas en el archivo de configuración?
Estoy tratando de aprender las características integradas de rastreo. No puedo averiguar cómo usar la configuración para establecer el nivel (información, advertencia, error) que se escribe para escuchar.
Tengo la aplicación por defecto .config con ella. En mi código, uso Trace.TraceInformation () y Trace.TraceError.
Todos los mensajes están escritos en mi archivo de texto. Quiero poder cambiar algo en la aplicación .config para hacer que grabe mensajes de información o solo mensajes de error.
Module1.vb
Sub Main(ByVal args() As String)
Dim index As Integer = 0
For Each arg As String In args
Trace.TraceInformation(String.Format("Sub Main(): arg({1}) = {0}", arg, index))
Trace.Flush()
If arg.Split("=").Count = 2 Then
If String.Compare(arg.Split("=")(0), "mode", True) = 0 Then _Mode = arg.Split("=")(1)
End If
index += 1
Next
End Sub
app.config
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="DefaultSource">
<listeners>
<add name="FileLog"/>
<!-- Uncomment the below section to write to the Application Event Log -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="1" />
</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"/>
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="HealthSurvey Console"/> -->
</sharedListeners>
</system.diagnostics>
No soy un fanático de responder tus propias preguntas, pero tampoco me gusta dejar preguntas sin marcar algo como la respuesta. Esto es especialmente cierto cuando encontré lo que estaba buscando.
Este link tenía la información que necesitaba. Lo resumiré porque es bastante largo. En la configuración, agrega un oyente. La clave que necesitaba era usar el <filter>
para el oyente. Con él, puedo implementar mi aplicación y luego cambiar la configuración para controlar el texto escrito en el archivo. Podría agregar otro oyente que tuviera un filtro diferente como quizás el registro de eventos.
De todos modos, la clave era <filter>
. El atributo initializeData
se establece en el texto de System.Diagnostics.SourceLevels
enum.
- La información permite información, advertencia y error.
- Advertencia permite advertencia y error
- El error permite solo el error
app.config
<system.diagnostics>
<trace autoflush="false" indentsize="1">
<listeners>
<add name="textListener"
type="System.Diagnostics.TextWriterTraceListener"
traceOutputOptions="None"
initializeData="C:/Projects/TraceLogOutput.log">
<filter
type="System.Diagnostics.EventTypeFilter"
initializeData="Information"/>
</add>
<remove name="Default" />
</listeners>
</trace>
módulo1.vb
Sub Main(ByVal args() As String)
'' initializeData = Information only
Trace.TraceInformation("Some Information message")
Trace.Flush()
'' initializeData = Information or Warning
Trace.TraceWarning("Some Warning message")
Trace.Flush()
'' initializeData = Information, Warning or Error
Trace.TraceError("Some Error message")
Trace.Flush()
End Sub