Как вы контролируете уровень прослушивателя трассировки в файле конфигурации
Я пытаюсь изучить встроенные функции трассировки. Я не могу понять, как использовать конфигурацию для установки уровня (информация, предупреждение, ошибка), который записывается в мое прослушивание.
У меня есть файл app.config по умолчанию. В моем коде я использую Trace.TraceInformation() и Trace.TraceError.
Все сообщения записываются в текстовый файл. Я хочу иметь возможность что-то изменить в app.config, чтобы он записывал информационные сообщения или просто сообщения об ошибках.
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>
Ответы
Ответ 1
Я не поклонник ответов на ваши собственные вопросы, но мне также не нравится оставлять вопросы, не отмечая что-то в качестве ответа. Это особенно верно, когда я нашел то, что искал.
Эта ссылка содержала необходимую мне информацию. Я подведу итог, потому что он довольно длинный. В config вы добавляете слушателя. Ключ, который мне нужен, это использовать <filter>
для слушателя. С его помощью я могу развернуть свое приложение, а затем изменить конфигурацию, чтобы управлять текстом, записанным в файл. Я мог бы добавить еще одного слушателя, у которого был другой фильтр, например, eventlog.
В любом случае ключ был <filter>
. Атрибут initializeData
устанавливается в текст из System.Diagnostics.SourceLevels
enum.
- Информация позволяет получать информацию, предупреждение и ошибки
- Предупреждение разрешает предупреждение и ошибки
- Ошибка только для ошибок
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>
Module1.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
Ответ 2
Это достойный обзор:
http://www.15seconds.com/issue/020910.htm