I'm trying to learn the built-in features of tracing. I can't figure out how to use the config to set the level (information, warn, error) that gets written to my listen.
I have the default app.config with it . In my code, I use Trace.TraceInformation() and Trace.TraceError.
All of the messages are written to my text file. I want to be able to change something in the app.config to make it record Info messages or just error messages.
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>
Trace messages are received by listeners. The purpose of a listener is to collect, store, and route tracing messages. Listeners direct the tracing output to an appropriate target, such as a log, window, or text file.
In order to use trace switches, you must first create them and place them in your code. There are two predefined classes from which you can create switch objects: the System. Diagnostics. BooleanSwitch class and the System.
WriteLine(String) Writes a message to the trace listeners in the Listeners collection. WriteLine(Object, String) Writes a category name and the value of the object's ToString() method to the trace listeners in the Listeners collection.
I'm not a fan of answering your own questions, but I also don't like leaving questions without marking something as the answer. This is especially true when I found what I was looking for.
This link had the info I needed. I will summarize because it is pretty long. In the config, you add a listener. The key that I needed was using the <filter>
for the listener. With it, I can deploy my application and then change the config to control the text written to the file. I could add another listener that had a different filter like maybe the eventlog.
Anyway, the key was <filter>
. The attribute initializeData
is set to the text from 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With