Log4Net无法登录应用程序关闭事件

时间:2017-02-07 14:42:22

标签: c# wpf log4net

我目前正在用C#开发一个WPF应用程序。 我现在想要记录应用程序的关闭。 Log4Net在我的程序的所有部分都能正常工作。 (除此之外)

示例:

The user clicks the default red "X" button every Windows Program has, the log should show "Application Closed"

我为Closing事件创建了一个行为(这是我要记录的地方),但是这里Log4Net只是无法记录。

我试过了:

Log.Flush();
Log.Dispose();

都未能胜任这项工作。 唯一可行的方法是通过打开MessageBox或执行Thread.Sleep(1000)

来延迟实际结算

有更好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

您可以在LogManager.Shutdown上致电关机:

LogManager.Shutdown();
  

调用此方法将安全地关闭并删除所有记录器中的所有appender,包括所有默认存储库中包含的root。   在应用程序存在之前,需要关闭一些appender。否则,挂起的日志记录事件可能会丢失。   在关闭常规appender之前,shutdown方法会小心关闭嵌套的appender。这允许将常规appender附加到记录器并再次连接到嵌套appender的配置。

答案 1 :(得分:1)

我弄清楚我的问题是什么,这并不是 log4net本身的错误。

问题是我在log4net上使用了一个特定于公司的包装器。这导致日志记录无法正确刷新到文件中。

我之后直接打电话给Log.Flush()然后Log.Dispose(),所以处置取消了Flush。

现在我只打电话给Log.Flush(),它完美无瑕。