traceSource记录创建logs的重复项

问题描述 投票:0回答:0
示例:

id

.

,但是,如果我生成另一个错误,则将错误添加到原始日志文件中,但也会创建另一个文件,第一个重复的文件未接收新错误。
很明显,我已经实现了错误的记录,但是我看不出为什么会创建重复的日志。如果我生成另一个错误,则会创建另一个文件。
但原始日志文件一直在更新,非常困惑。
没有我的DB/Connection的细节,这是一个非常简单的复制,因为我认为娱乐不需要它。
62-60ae-3423sfd4534-42342-7sdfsfh4s3c142Commission
如果我运行此操作,我收到2个文件,我的日志文件和一个包含

private void Login_Btn_Click(object sender, EventArgs e) { bool userExists = false; // Logging (get users application data path) var roamingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); var filePath = Path.Combine(roamingDirectory, "Commission.log"); Trace.Listeners.Add(new TextWriterTraceListener(filePath, "myListener")); try { if(!userExists) { // Logging Trace.TraceInformation(DateTime.Now.ToShortDateString() + " | " + DateTime.Now.ToLongTimeString() + " - User login failed. Exception: User ID not found"); } } catch(Exception ex) { // Logging Trace.Listeners.Add(new TextWriterTraceListener(filePath, "myListener")); Trace.TraceInformation(DateTime.Now.ToShortDateString() + " | " + DateTime.Now.ToLongTimeString() + " - " + ex.ToString()); } Trace.Flush(); }

在这里我创建配置文件以使其全部工作

Commission Information: 0 : **/**/**** | **:**:** - User login failed. Exception: User ID not found

您获得比预期更多的文件的原因是您多次使用
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <trace autoflush="false" indentsize="4"> <listeners> <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\\Commission.log" /> <remove name="Default" /> </listeners> </trace> <sources> <source name="TraceTest" switchName="sourceSwitch" switchType="System.Diagnostics.SourceSwitch"> <listeners> <add name="console" type="System.Diagnostics.ConsoleTraceListener"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/> </add> <add name="myListener"/> <remove name="Default"/> </listeners> </source> </sources> <switches> <add name="sourceSwitch" value="Error"/> </switches> </system.diagnostics> </configuration>

。通常,您每个侦听器每个应用程序都应仅使用一次命令。

我想象听众是一种记录器 - 您可以让侦听器将日志发送到文件,另一个用于控制台,另一个用于seq。
您要做的是,在每个按钮单击时,您添加了文件侦听器的新实例,因此从现在开始,您添加的每个侦听器都将写入新文件等等。
我猜想是因为您多次将其注册,请跟踪另一个文件(带有GUID)来防止并发文件写入。
    

c# trace
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.