저는 log4net을 사용하고 있습니다. 사용자가 해당 버튼을 클릭하면 로그 파일이 지워지는 GUI에 버튼을 추가하려고합니다. 어떻게하면됩니까?log4net 로그 파일을 지우려면 어떻게해야합니까?
고마워요.
저는 log4net을 사용하고 있습니다. 사용자가 해당 버튼을 클릭하면 로그 파일이 지워지는 GUI에 버튼을 추가하려고합니다. 어떻게하면됩니까?log4net 로그 파일을 지우려면 어떻게해야합니까?
고마워요.
log4net에서 "기본 제공"되지 않습니다. 그러나 RollingFileAppender를 사용하고 수동 클래스/메소드를 만들어 로그 파일을 정리/삭제할 수 있습니다. 참고로
, Log4Net: set Max backup files on RollingFileAppender with rolling Date
또 다른 접근 방식을 통해 로그 파일에 최소 잠금 레벨을 설정하는 것입니다 잠긴 파일 피하기 위해 : 너무,
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
나는이 문제를 가지고 있습니다.
당신은 당신의 설정이 필요합니다
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
고마워 나는 로그를 분명히 성공.
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
로그 파일을 삭제하는 코드는 다음과 같습니다 : 로그 구성 파일의 어 펜더 블록에서 나는 그 라인에 추가
RollingFileAppender fileAppender = LogManager.GetRepository()
.GetAppenders().FirstOrDefault(appender => appender is RollingFileAppender) as RollingFileAppender;
if (fileAppender != null && File.Exists(((RollingFileAppender)fileAppender).File))
{
string path = ((RollingFileAppender)fileAppender).File;
log4net.Appender.FileAppender curAppender = fileAppender as log4net.Appender.FileAppender;
curAppender.File = path;
FileStream fs = null;
try
{
fs = new FileStream(path, FileMode.Create);
}
catch(Exception ex)
{
(log4net.LogManager.GetLogger(this.GetType())).Error("Could not clear the file log", ex);
}
finally
{
if (fs != null)
{
fs.Close();
}
}
}
모든
답장을 참조하십시오. 그것이 내가 당신을 가리킨 방향이라고 믿습니다.다행 이군. – Seany84
만약 당신에게 감사를 당신 돈 최소한의 잠금을 가짐으로써 성능에 영향을 미치고 싶지 않다면 (최소한 answer), 최소한의 잠금을 사용하도록 임시로 appender를 구성하고 파일을 삭제 한 다음 기본 동작 되돌리기. 만 RollingFileAppenders을 사용하고
예 :
// Release the lock on the log4net log files
var appenders = log4net.LogManager.GetRepository().GetAppenders();
foreach (var appender in appenders)
{
var rollingFileAppender = appender as log4net.Appender.RollingFileAppender;
if (rollingFileAppender != null)
{
rollingFileAppender.ImmediateFlush = true;
rollingFileAppender.LockingModel = new log4net.Appender.FileAppender.MinimalLock();
rollingFileAppender.ActivateOptions();
}
}
파일은 이제 무료는 문제없이 삭제 될 수 있습니다.
는 단순히 응용 프로그램의 시작 명령
File.WriteAllText("C:/Users.../log.xml", "");
를 사용합니다.
고마워요! 하지만 파일을 삭제하려고하면 log4net이 파일을 catch하기 때문에 예외가 발생합니다. log4net에서 로그 파일을 해제하려면 어떻게합니까? –
삭제를 호출하기 전에 CloseFile() 메서드를 사용할 수 있습니다. – Darek
나는 이것이 별개의 질문이지만 Darek이 제안한 것처럼 생각합니다. 우리가 어떻게 일하는지 당신에게 알리고, 이것이 당신에게 효과가 있다면 답변으로 표시하는 것을 잊지 마십시오. – Seany84