C# 成功发送电子邮件后删除Nlog日志文件
我想在每次应用程序运行之间删除我的Nlog日志文件,但前提是它已成功通过电子邮件发送给我,否则它应继续添加到日志文件中。我正在使用Outlook通过电子邮件发送文件。我不想使用Smtp,因为有些网络会阻止端口25,然后它就不会通过电子邮件发送给我 问题是当我试图用File删除日志文件时。delete(logfile)表示该文件正被另一个进程使用。如何解锁或关闭文件,以便使用Outlook发送电子邮件(然后重新打开以进行进一步记录) 我想复制一份日志文件并通过电子邮件发送,但我不确定这是否是最好的方式C# 成功发送电子邮件后删除Nlog日志文件,c#,outlook,nlog,C#,Outlook,Nlog,我想在每次应用程序运行之间删除我的Nlog日志文件,但前提是它已成功通过电子邮件发送给我,否则它应继续添加到日志文件中。我正在使用Outlook通过电子邮件发送文件。我不想使用Smtp,因为有些网络会阻止端口25,然后它就不会通过电子邮件发送给我 问题是当我试图用File删除日志文件时。delete(logfile)表示该文件正被另一个进程使用。如何解锁或关闭文件,以便使用Outlook发送电子邮件(然后重新打开以进行进一步记录) 我想复制一份日志文件并通过电子邮件发送,但我不确定这是否是最好的
Thx for any ideas.不是Outlook阻止删除文件-您的应用程序仍在运行,并且该文件的日志记录仍处于活动状态,因此是应用程序的Nlog部分阻止删除。
告诉nlog使用不同的日志文件,或者根本不进行日志记录(您可以稍后恢复日志记录)。默认情况下,nlog不保持文件打开状态(文件目标,保持文件打开)。所以,要么在应用程序写入数据时尝试删除该文件,要么outlook仍在使用该文件 首先,您可能希望通过outlook发送日志文件的副本。所以您可以确保原始文件没有被外部进程锁定 第二,您将能够重新配置当前文件目标以写入另一个文件(
log(n+1).txt
或其他文件。上有一些关于编程配置的提示)。因此,您将确保应用程序未登录到该文件
我想,这样您就可以删除它了。选项1:
if(chkLogger.Checked){
NLog.Config.SimpleConfigurator.ConfigureForFileLogging("Logfile.log",NLog.LogLevel.Trace);
}
else
{
NLog.Config.SimpleConfigurator.ConfigureForFileLogging("Logfile.log", NLog.LogLevel.Off);
}
选项2:LogManager.DisableLogging()和LogManager.EnableLogging()
从网站