Я хочу реализовать собственный класс 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 } } }
Существует ли ещеэлегантное решение?Предоставляет ли API-интерфейс диагностики .NET какой-либо тип "скользящего" события?