Пользовательский TraceListener, который архивирует пролонгированные журналы

Я хочу реализовать собственный класс TraceListener, который записывает E2ETraceEvent в циклические файлы на основе метки времени. Я нашел отличную библиотеку, которая делает именно то, что я хочу здесь: https://github.com/sgryphon/essential-diagnostics/blob/develop/src/Essential.Diagnostics.RollingXmlTraceListener/Diagnostics/RollingXmlTraceListener.cs

Однако у меня есть еще одно требование архивировать файлы журналов в zipfile всякий раз, когда он переносится на новый файл. Одним из очевидных решений этого является создание производного класса 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 какой-либо тип "скользящего" события?

0 ответов

Другие вопросы по тегам