我当前正在修改NLog配置,并尝试将目标设置为异步并使用BufferingTarget进行邮件处理时,我发现Nlog似乎并没有在应用程序关闭时刷新邮件。
调用LogManager.Flush();也不起作用,它给出了NLog.NLogRuntimeException:
NLog.dll中发生了类型为'NLog.NLogRuntimeException'的第一次机会异常。其他信息:发生了异步异常。
我发现async="true"从targets配置中删除即可。以下是我用来进行测试的配置和控制台源代码。
我看到有很多与日志序列和/或FallbackTarget相关的帖子,但是它们对解决我目前遇到的问题没有太大帮助。
控制台应用
class Program
{
static void Main(string[] args)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Debug("Debug Message");
logger.Debug("Debug Message");
LogManager.Flush();
LogManager.Shutdown();
}
}
Run Code Online (Sandbox Code Playgroud)
Nlog配置
class Program
{
static void Main(string[] args)
{
Logger logger = LogManager.GetCurrentClassLogger();
logger.Debug("Debug Message");
logger.Debug("Debug Message");
LogManager.Flush();
LogManager.Shutdown();
}
}
Run Code Online (Sandbox Code Playgroud)
异常堆栈跟踪
at NLog.Common.AsyncHelpers.RunSynchronously(AsynchronousAction action)
at NLog.LogFactory.Flush(TimeSpan timeout)
at NLog.LogFactory.Flush()
at NLog.LogManager.Flush()
at MyProject.NlogTests.Program.Main(String[] args) in p:...\Program.cs:line 15
Run Code Online (Sandbox Code Playgroud)
Nlog日志文件(简体)
2016-12-09 17:29:55.0471 Trace Opening \bin\Dev\\Logs\Info.log with allowFileSharedWriting=False …Run Code Online (Sandbox Code Playgroud)