Какой лучший tracelistener файла журнала ролловера для .NET - PullRequest
30 голосов
/ 01 октября 2008

Я ищу хороший TraceListener для .Net, который поддерживает пролистывание файла журнала на основе ограничений размера.

Ограничения

  • Использует .Net встроенную трассировку журнала
  • Независимый класс или двоичный файл, который не является частью какой-то гигантской библиотеки
  • Позволяет пролистывать файл журнала в зависимости от размера

Ответы [ 8 ]

32 голосов
/ 01 октября 2008

Вы можете использовать Microsoft.VisualBasic.Logging.FileLogTraceListener , который поставляется со встроенной .NET Framework. Не позволяйте VisualBasic в пространстве имен пугать вас, вам просто нужно сослаться на сборку microsoft.visualbasic.dll, и она должна нормально работать с C #.

7 голосов
/ 04 апреля 2016

Я держу этот фрагмент конфигурации под рукой всякий раз, когда мне нужно выполнить трассировку сети. Мне не нужно, чтобы проект создавался с явной ссылкой на VB DLL, поскольку это происходит путем добавления ссылки в App.config во время выполнения.

<system.diagnostics>
  <sources>
    <source name="System.Net">
      <listeners>
        <add name="System.Net"/>
      </listeners>
    </source>
    <source name="System.Net.Http">
      <listeners>
        <add name="System.Net"/>
      </listeners>
    </source>
    <source name="System.Net.Sockets">
      <listeners>
        <add name="System.Net"/>
      </listeners>
    </source>
  </sources>
  <switches>
    <add name="System.Net" value="Verbose"/>
    <add name="System.Net.Http" value="Verbose"/>
    <add name="System.Net.Sockets" value="Verbose"/>
  </switches>
  <sharedListeners>
    <add name="System.Net"
          type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
          traceOutputOptions="DateTime,ProcessId,ThreadId"
          customLocation="c:\temp"
          location="Custom"
          logFileCreationSchedule="Daily"
          baseFileName="NetworkTrace"/>
  </sharedListeners>
  <trace autoflush="true"/>
</system.diagnostics>

И добавить ссылку во время выполнения

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.VisualBasic"  culture="neutral" publicKeyToken="b03f5f7f11d50a3a"/>
        <codeBase version="10.0.0.0" href="file://C:/Program Files (x86)/Reference Assemblies/Microsoft/Framework/.NETFramework/v4.5/Microsoft.VisualBasic.dll"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
4 голосов
/ 01 октября 2008

Я использую NLog , и я очень доволен. Исходный код хорошо написан, его легко расширять и изменять. Документация хороша и очень проста в настройке.

Некоторые ссылки:

3 голосов
/ 01 октября 2008

Я большой поклонник log4net (http://logging.apache.org/log4net/index.html),, он очень прост в настройке и поддерживает практически любой тип журнала, который вы хотите, но также может иметь свои собственные.

Он также может выполнять различные действия в зависимости от уровня журнала. Мы записываем все сообщения в текстовый файл и Error -> Fatal отправлять письма

2 голосов
/ 21 января 2017

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

Мы создали класс, который расширяет его и переопределяет методы Write / WriteLine.

Существует try/catch (InvalidOperationException), и если это произойдет, мы вызываем base.Close и переименовываем файл (FullLogFileName) следующим образом (нам нужен base.Close, иначе мы получим ошибку «файл используется» ):

В цикле мы добавляем число в конец и видим, существует ли этот файл; если нет, используйте File.Move(FullLogFileName, newFileWithNumber), в противном случае мы будем увеличивать число до тех пор, пока не найдем имя файла, которое работает. Также есть блокировка, гарантирующая, что данный экземпляр является потокобезопасным.

2 голосов
/ 01 октября 2008

Я использовал и Log4Net, и Nlog. Я предпочитаю NLog, но на самом деле, как только они настроены, вы все равно забываете, что они есть (пока что-то не сломается, тогда вы будете рады, что оно есть!). там должно быть много документации на оба сайта

0 голосов
/ 29 марта 2013

Как указано в одном из комментариев:

FileLogTraceListener Class

Записывает в подвижный текстовый файл.

Примечания

Новый файл используется при достижении maxFileSize, а также ежедневно или еженедельно, как указано в logFileCreationSchedule.

Каждый файл имеет имя в формате "\ (-) (-). log", с местная дата включена для ежедневной и еженедельной ротации, а также последовательность номер добавляется, если файл уже существует.

0 голосов
/ 03 декабря 2010

Рассмотрим Блок приложения регистрации в корпоративной библиотеке

Обязательно устанавливайте только блок ведения журнала, поскольку установщик EntLib по умолчанию проверяет все блоки.

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