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");
}
}
}