쓰는 로그 파일을 만드는 테스트 클래스를 만듭니다. 클래스의 LogErrors 메서드를 참조하여 내 프로그램 전체에서 파일에 텍스트를 추가 할 수 있기를 원합니다. 오류가 내 프로그램에 발생하는 경우 을 그때 방법을 참조 파일C# 프로그램 전체에서 동적으로 파일에 텍스트 추가
test.LogErrors("INVALID RECORD", string.Join(",",line));
에 텍스트의 라인을 추가 할 : 나는 파일에 레코드를 추가 할 수있는 클래스를 참조하는 경우 여기에
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);
}
}
입니다 아직 존재하지 않고 다른 곳에서 오픈되지 않도록
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 라인을 과거이게하고 테스트 클래스로 이동하지만 프로그램을 중지하면이 라인은 파일을 테스트 씁니다 후. 파일에 아무것도 없습니다. 둘 이상의 파일에 대해 잠금 객체를 사용할 수도 있습니다. 이 테스트 클래스에서 많은 로그 파일을 만들고 있습니다. Streamwriter가이를 선언 할 때 c : /와 같은 파일을 어디에 배치해야하는지 프로그램에서 어떻게 알 수 있습니까?
모습 (http://stackoverflow.com/questions/4010543/lock-in-a-static-method/4010606#4010606) – Jonesopolis