我有一个类的实例,它存在很长时间(几个小时到几个月)。它有一个方法将日志事件输出到文本文件 C:\mylog.txt
。如下所示:
public MyClass
{
private static System.Diagnostics.TraceSource traceSource = new System.Diagnostics.TraceSource("My.Source");
private static void MyMethod()
{
traceSource.TraceEvent(System.Diagnostics.TraceEventType.Information, 0, "MyMethod called.");
}
}
这个 C:\mylog.txt
可能会变得很大,我想删除它。但是我无法删除该文件,可能是因为 traceSource
锁定了它(通过终止进程,我可以删除该文件)。
所有关于 System.Diagnostics.TraceSource
的示例都将其实例声明为上述静态类成员。在我的情况下,是否可以像下面的方法一样在方法中初始化它?
public MyClass
{
private static void MyMethod()
{
var traceSource = new System.Diagnostics.TraceSource("My.Source");
traceSource.TraceEvent(System.Diagnostics.TraceEventType.Information, 0, "MyMethod called.");
}
}
还是有特定的原因需要将它声明为静态的吗?我做错了什么吗?文件锁定是期望/必须的行为吗?
.config
文件中相关的设置? - Vojtěch Dohnal