C# 实现用于日志记录的静态跟踪类

C# 实现用于日志记录的静态跟踪类,c#,logging,trace,C#,Logging,Trace,我试图实现一个利用System.Diagnostics.Trace的日志类。我想控制何时向文件(侦听器)写入/刷新数据,因此我想禁用AutoFlush=False,但由于我使用的是静态类,我想知道如何刷新所有剩余数据,以便在应用程序(持有跟踪类)立即关闭时不会丢失任何要写入文件的挂起日志 请告知 下面是我课堂上的一个片段 如果这是一个asp.net应用程序,您可以使用“application_End”事件确保刷新跟踪。有关其他应用程序类型,请参阅此链接:Thank@EmilLundin。实际上

我试图实现一个利用
System.Diagnostics.Trace
的日志类。我想控制何时向文件(侦听器)写入/刷新数据,因此我想禁用
AutoFlush=False
,但由于我使用的是静态类,我想知道如何刷新所有剩余数据,以便在应用程序(持有跟踪类)立即关闭时不会丢失任何要写入文件的挂起日志

请告知

下面是我课堂上的一个片段



如果这是一个asp.net应用程序,您可以使用“application_End”事件确保刷新跟踪。有关其他应用程序类型,请参阅此链接:Thank@EmilLundin。实际上,我使用的是某种24x7运行的
服务
类型的应用程序,但在关机期间,如果刷新间隔较低,则可能会丢失数据。控制台应用在技术上与
服务
相同吗?我认为您可以对服务使用相同的方法。请注意,在强力退出(如断电)的情况下,不会触发该事件。
namespace App
{
    public class Trace 
    {   
        private Trace()
        {
            // prevent construction
        }

        Timer timer;

        private timer_Elapsed()
        {
            // Flush all pending lines to log
            System.Diagnostics.Trace.Flush()
        }

        static public void Initialize()
        {
            // Init
            System.Diagnostics.Trace.Listeners.Add( Listener );
            System.Diagnostics.Trace.AutoFlush = false;
        }

        static void Log(string str)
        {
            System.Diagnostics.Trace.WriteLine("str");
        }
    }
}