我目前正在用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)
有更好的解决方案吗?
答案 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()
,它完美无瑕。