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

C# Log4Net无法登录应用程序关闭事件,c#,wpf,log4net,C#,Wpf,Log4net,我目前正在用C#开发一个WPF应用程序。 我现在要记录应用程序的关闭。 Log4Net在我的程序的所有部分都能正常工作。(除此之外) 例如: 用户单击每个Windows程序的默认红色“X”按钮,日志应显示“应用程序已关闭” 我为关闭事件创建了一个行为(这是我想要记录的地方),但这里Log4Net无法记录 我试过: Log.Flush(); Log.Dispose(); 两人都没能完成任务。 唯一有效的方法是通过打开消息框,或执行线程来延迟实际关闭。Sleep(1000) 有更好的解决方案吗?您

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

例如:

用户单击每个Windows程序的默认红色“X”按钮,日志应显示“应用程序已关闭”

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

我试过:

Log.Flush();
Log.Dispose();
两人都没能完成任务。 唯一有效的方法是通过打开
消息框
,或执行
线程来延迟实际关闭。Sleep(1000)


有更好的解决方案吗?

您可以呼叫关机:

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


我发现了我的问题所在,这不是log4net自身的错

问题是,我使用的是位于log4net之上的特定于公司的包装器。这导致日志记录未正确刷新到文件中

我正在调用
Log.Flush()
,然后直接调用
Log.Dispose()
,因此Dispose取消了刷新


现在我只调用了
Log.Flush()
,它的工作原理是完美的。

我怀疑某些特定于您的应用程序的有趣WPF行为,我还没有看到Log4Net有这样的计时问题。只是为了验证,您是否尝试在代码隐藏中处理
关闭事件?那有什么区别吗?这没什么区别谢谢你的表现,我发现那是我自己的错
LogManager.Shutdown();