log4net을 사용하여 응용 프로그램 디렉토리에있는 "logfile.txt"파일 이름에 일부 로그 출력을 쓰는 C# 응용 프로그램이 있습니다. 파일 크기가 10GB에 도달하자마자 파일의 내용을 비우고 싶습니다.동일한 프로그램에서 사용중인 로그 파일의 내용을 비우는 방법
그 이유는 파일 크기가 10GB를 초과하는지 확인하는 타이머를 사용하고 있기 때문입니다. 이 출력을 로그 작성하는 다른 스레드에서 사용하고 그것이 저를 던지고 있기 때문에 하지만
은 log4net는 당신을 위해 그것을 할 수 있기 때문에 당신은 당신의 자신에 로그 파일을 삭제하지 말아야System.IO.IOException "프로세스가 파일 'C에 액세스 할 수 없습니다"logfile.txt 여기서 "에 어떤 작업을 수행 할 수 없습니다 : \ Program Files \ MyApps \ TestApp1 \ logfile.txt '다른 프로세스에서 사용 중이므로. " 여기
private void timer_file_size_check_Tick(object sender, EventArgs e)
{
try
{
string log_file_path = "C:\\Program Files\\MyApps\\TestApp1\\logfile.txt";
FileInfo f = new FileInfo(log_file_path);
bool ex;
long s1;
if (ex = f.Exists)
{
s1 = f.Length;
if (s1 > 10737418240)
{
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
File.Delete(log_file_path);
//File.Create(log_file_path).Close();
//File.Delete(log_file_path);
//var fs = new FileStream(log_file_path, FileMode.Truncate);
}
}
else
{
MDIParent.log.Error("Log file doesn't exists..");
}
}
catch (Exception er)
{
MDIParent.log.Error("Exceptipon :: " + er.ToString());
}
}
try/catch가 섞여 있습니다. try 문에서 catch를 수행하십시오. – joppiesaus
로그 파일 크기를 10GB 이하로 유지하도록 응용 프로그램을 재구성하지 않는 이유는 무엇입니까? 이 작업은'RollingFileAppender'와'maximumFileSize' 옵션으로 할 수 있습니다. log4net의 핵심은 애플리케이션 로직과 독립적으로 로깅을 구성 할 수있는 유연성을 제공한다는 것입니다. –
MDIParent.log는 해당 로그를 "logfile.txt"파일에 기록하는 ILog 유형 구성원입니다. 파일 크기가 10GB에 도달하면이 파일의 내용을 비우는 것입니다. –