【发布时间】:2022-12-19 21:39:32
【问题描述】:
我在我的应用程序中实现了 TraceSource 日志记录。此日志跟踪失败的登录尝试和错误。
当我运行该程序并生成我的第一个错误时,我的文件 CommissionLog.log 被创建并且错误包含在其中,但同时也创建了另一个文件,其内容似乎是 id 示例:62-60ae-3423sfd4534-42342-7sdfsfh4s3c142Commission。
但是,如果我生成另一个错误,该错误会添加到原始日志文件中,但还会创建另一个文件,第一个复制的文件不会收到新错误。
显然我错误地实现了 TraceSource 日志记录,但我不明白为什么它会创建重复的日志。如果我生成另一个错误,则会创建另一个文件。
但是原来的日志文件一直在更新,很迷茫。
这是一个非常简单的复制,没有我的数据库/连接的详细信息,因为我觉得娱乐不需要它
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();
}
如果我运行这个,我会得到 2 个文件,我的日志文件和一个包含
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>
【问题讨论】: