Пользовательский TraceListener, который архивирует пролонгированные журналы - PullRequest
0 голосов
/ 09 февраля 2019

Я хочу реализовать собственный класс 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 какой-либо тип "скользящего" события?

...