Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 成功发送电子邮件后删除Nlog日志文件_C#_Outlook_Nlog - Fatal编程技术网

C# 成功发送电子邮件后删除Nlog日志文件

C# 成功发送电子邮件后删除Nlog日志文件,c#,outlook,nlog,C#,Outlook,Nlog,我想在每次应用程序运行之间删除我的Nlog日志文件,但前提是它已成功通过电子邮件发送给我,否则它应继续添加到日志文件中。我正在使用Outlook通过电子邮件发送文件。我不想使用Smtp,因为有些网络会阻止端口25,然后它就不会通过电子邮件发送给我 问题是当我试图用File删除日志文件时。delete(logfile)表示该文件正被另一个进程使用。如何解锁或关闭文件,以便使用Outlook发送电子邮件(然后重新打开以进行进一步记录) 我想复制一份日志文件并通过电子邮件发送,但我不确定这是否是最好的

我想在每次应用程序运行之间删除我的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()

从网站