有一个测试类来创建我写入的日志文件。我希望能够通过引用类的 LogErrors 方法在整个程序中向文件中添加文本。
public class test
{
public static string errorFileName = DateTime.Now.ToString("yyyy-MM-dd") + "testerrors.csv";
public static StreamWriter errorfile = new StreamWriter("c:\" + @"\" + errorFileName, true);
public static void LogErrors(string error, string record)
{
test.errorfilewriter.WriteLine( error + "," + record );
}
}
这是我引用该类以将记录附加到文件的地方:如果在我的程序中遇到错误,我想引用该方法,然后将该行文本添加到文件中
test.LogErrors("INVALID RECORD", string.Join(",",line));
在该行我收到此错误:
The type initializer for program.Test threw an excpetion.
INNER EXCEPTION: The process cannot access the file c:\2013-10-21testerrors.csv because it is being used by another process.
该文件只是在此程序期间创建的,因此它尚不存在,也未在其他地方打开。
编辑:
public class test
{
public static string errorFileName = DateTime.Now.ToString("yyyy-MM-dd") + "testERRORS.csv";
private static object _lockObj = new Object();
public static void LogErrors(string error, string record)
{
lock (_lockObj)
{
File.AppendAllText(Logging.errorFileName, error + "-" + record);
//File.AppendAllLines does not exist in .NET 3.5
}
}
test.LogErrors("INVALID",line));
我通过了 test.LogError 行,它进入了测试类,但是如果我在程序写入该行以测试文件后停止程序。文件中没有任何内容我也可以将锁定对象用于多个文件。当我在这个测试类中创建一堆日志文件时。程序如何知道将 c:/ 之类的文件放置在哪里,因为流编写器声明了这一点。