Ротация файлов журнала с помощью прослушивателей .net - PullRequest
4 голосов
/ 15 мая 2009

У меня есть существующая .net служба, и я хочу настроить ее для записи сообщений в файл журнала. Я добавил следующее в конфигурацию сервиса:

<system.diagnostics>
  <sources>
    <source name="My.Service" switchValue="All">
      <listeners>
        <add name="text" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\log.txt" traceOutputOptions="Timestamp"/>
      </listeners>
    </source>
  </sources>
</system.diagnostics>

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

Спасибо за любые предложения.

Ответы [ 3 ]

9 голосов
/ 15 мая 2009

Существует FileLogTraceListener , который, я думаю, сработает. Вы можете настроить его на ежедневный или недельный интервал.

Если этого недостаточно, вам придется написать собственный tracelistener, просто наследовать от TraceListener и переопределить методы записи.

0 голосов
/ 15 мая 2009

Возможно, вы можете взглянуть на log4net - бесплатную и простую в использовании библиотеку журналов для .NET. Эта библиотека уже включает ротацию журналов.

В противном случае вам будет предоставлена ​​возможность «разблокировать» файл и / или автоматически войти в новый файл.

0 голосов
/ 15 мая 2009

Не могли бы вы встроить ротацию журнала в имя файла так, чтобы:

"C: \ log.txt"

становится:

"C: \ logDDMMYYYY.txt"

Таким образом, журнал автоматически переходит на новый файл в конце дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...