Эффективный способ усечения файла трассировки, когда он становится слишком большим? - PullRequest
1 голос
/ 07 апреля 2009

Я использую встроенный механизм отслеживания .NET для отслеживания выполнения программы. Проблема в том, что файл трассировки может очень быстро вырасти до нескольких МБ. Есть ли эффективный способ обрезки файла, когда он превышает определенную точку? Я думал о проверке всякий раз, когда что-то пишется (у меня есть собственный класс, который наследуется от TraceListener), но это может слишком сильно снизить производительность. Может быть, таймер будет лучшим решением?

У кого-нибудь есть идеи?

Ответы [ 2 ]

4 голосов
/ 07 апреля 2009

Реализация пользовательского прослушивателя трассировки:

Давайте посмотрим, как мы можем решить довольно распространенную задачу: управление постоянно генерируемыми файлами трассировки. Реализация прослушивателя трассировки по умолчанию не очень подходит для приложений-служб, которые должны быть всегда активными. Если приложение выдает много данных трассировки, то рано или поздно эта информация будет занимать все дисковое пространство.

http://www.codeproject.com/KB/dotnet/customnettracelisteners.aspx?display=Print

В этом примере вы можете создать чанк журнала следующим образом:

MyTrace.txt (recent trace information); 
MyTrace00.txt (trace history backup); 
MyTrace01.txt (trace history backup); 
and so on...

Конечно, вы можете выбросить файлы резервных копий.

(Подсказка: попробуйте log4net ( здесь ) и Блок ведения журнала Enterprise Library ( здесь )!)

1 голос
/ 07 апреля 2009

Возможно, используйте прослушиватель трассировки журнала событий, так как EventLog может быть легко автоматически циклически таким образом.

...