我想实现一个自定义的TraceListener类,该类确实根据时间戳将E2ETraceEvent写入滚动文件。 我发现一个漂亮的库可以完全满足我的要求:https://github.com/sgryphon/essential-diagnostics/blob/develop/src/Essential.Diagnostics.RollingXmlTraceListener/Diagnostics/RollingXmlTraceListener.cs
但是,我还需要在将日志文件翻转到新文件时将其归档到zip文件中。一个明显的解决方案是使RollingXmlTraceListener的派生类并将其构造函数重写为类似以下内容:
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是否本身公开了某种类型的“滚动”事件?