自定义TraceListener,用于存档滚动日志

时间:2019-02-08 22:53:01

标签: c# .net logging tracesource

我想实现一个自定义的TraceListener类,该类确实根据时间戳将E2ETraceEvent写入滚动文件。 我发现一个漂亮的库可以完全满足我的要求:https://github.com/sgryphon/essential-diagnostics/blob/develop/src/Essential.Diagnostics.RollingXmlTraceListener/Diagnostics/RollingXmlTraceListener.cs

但是,我还需要在将日志文件翻转到新文件时将其归档到zip文件中。一个明显的解决方案是使RollingXmlTraceListener的派生类并将其构造函数重写为类似以下内容:

//基本构造函数在这里:https://github.com/sgryphon/essential-diagnostics/blob/develop/src/Essential.Diagnostics.RollingXmlTraceListener/Diagnostics/RollingXmlTraceListener.cs#L58

public class ArchivingAndRollingXmlListener: RollingXmlTraceListener  {

    public ArchivingAndRollingXmlListener(string filePathTemplate): base(filePathTemplate)
        {
            if (string.IsNullOrEmpty(filePathTemplate))
            {
                // look for all non-zip files that aren't named filePathTemplate in the parent directory of filePathTemplate and zip them up
            }

        }
}

是否存在更优雅的解决方案? .NET的诊断API是否本身公开了某种类型的“滚动”事件?

0 个答案:

没有答案