1. TraceListener
Сайт разработчика: microsoft.com
Последняя дата обновления: Входит в состав .NET Framework
Последняя дата обновления: Входит в состав .NET Framework
Функционал протоколирования, который поставляется совместно в .NET Framework (System.Diagnostics.TraceListener). Ранее я упоминал, что в составе .NET Framework есть функции Trace.Write и Debug.Write, которые являются одной из наиболее полезных особенностей отладки.NET Framework. Функционально
Trace
очень похож на Debug
, но в отличие от своего Debug
брата, который должен быть использован только во время отладки, Trace
функция может быть внедрена в программу и поставлена заказчикам, в том случае, если пользователи сталкиваются с проблемой, они могут активировать Trace, просто редактируя файл конфигурации приложений. 1.1. Переключатели
Следующий элемент, с помощью которого можно управлять протоколированием – это переключатели. Грубо говоря – это флаги, которые можно использовать перед вызовов функции протоколирования.
Можно путем настройки в приложении переключателей трассировки включать или отключать трассировку. Так же для настройки переключателей можно использовать файл конфигурации (для веб-приложений web.config, в Windows приложении это app.config), где можно указать включен ли он, его уровень или определено количество и тип сообщений, передаваемых слушателям.Для перенастройки переключателей нужно изменить настройку файла конфигурации и перезапустить приложение. Существуют следующие переключатели (для указания значения переключателя можно использовать текст):
- BooleanSwitch (0, соответствует Off, а любое ненулевое значение соответствует On)
- TraceSwitch (значения многоуровневого переключателя, равные 0,1,2,3 и 4, соответствуют Off, Error, Warning, Info и Verbose соответственно, все числа больше 4 интерпретируются как Verbose, числа меньше 0 — как Off). Т.е. может применяться, если требуется ограничить уровни трассировки (по важности).
- SourceSwitch – многоуровневой переключатель для управления выходными данными трассировки и отладки без повторной компиляции кода.
Переключатели могут определяться в коде, или через файл конфигурации (рекомендуется использовать, т.к. управление настройкой параметров в системе конфигурации обеспечивает большую гибкость — возможность включать и отключать различные переключатели и изменять уровни без перекомпиляции приложения, а затем использовать этот настроенный уровень в приложении).
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <trace autoflush="true"indentsize="4"> <listeners> <addname="configConsoleListener" type="System.Diagnostics.ConsoleTraceListener" /> <addname="delimitedListener" type="System.Diagnostics.DelimitedListTraceListener" delimiter=":" initializeData="c:\delimitedOutput.txt" traceOutputOptions="ProcessId, DateTime" /> <removename="utilex" /> </listeners> </trace> <switches> <addname="mySwitch"value="true"/> <addname="TraceLevelSwitch"value="Warning" /> <addname="SourceSwitch"value="Verbose"/> </switches> </system.diagnostics> </configuration>
Переключатели можно настроить следующим образом:допустим нужно выводить в модуле доступа к данным все сообщения трассировки, а в остальном приложении только сообщения об ошибках. В этом случае для модуля доступа к данным и для остальной части приложения используются два разных переключателя трассировки. Настроив соответствующие значения переключателей с помощью CONFIG-файла, можно управлять типами получаемых сообщений трассировки.
Присутствует возможность создавать свои классы переключателей.
Разработчик самостоятельно определяет, какие типы сообщения будут связаны с каждым из уровней.Надо самим проверять уровень детализации информации при попытке записи трассировки. Сама система это не делает. Например, если в файле настроек прописано, что уровень детализации только ошибки, а в коде будет стоять строка
1.2. ПрослушивателиTrace.TraceWarning(), то сообщение о предупреждении будет записано, если не была осуществлена проверка
if (TraceSwitch.TraceWarning).
Классы Debug и Trace отправляют сообщения объектам, называемым прослушивателями (подписчики), которые получают и обрабатывают эти сообщения. Прослушиватели представляют собой объекты, получающие выходные данные трассировки и записывающие их в устройство вывода.Один из таких прослушивателей, DefaultTraceListener, создается и инициализируется автоматически при включении трассировки и отладки.
В состав .NET Framework входят следующие прослушиватели, которые удовлетворяют индивидуальным требованиям пользователям (набор можно дополнять):
- DefaultTraceListener
- ConsoleTraceListener – просмотр в консоли вывода во время выполнения приложения
- TextWriterTraceListener – записывает весь вывод в текстовый файл или в поток.
- EventLogTraceListener – направление вывода в журнал событий.
- DelimitedListTraceListener
- XmlWriterTraceListener
Прослушиватели можно добавлять в коллекцию в коде или через файл конфигурации приложения. Любые открытые члены этого типа, объявленные как static, являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.
Так же прослушиватель можно добавить через файл настройки. С помощью файла настройки можно выполнять следующие действия:
- Добавить прослушиватель, задав его тип и параметры
- Удалить прослушиватель
- Удалить все прослушиватели, заданные в приложении ранее.
- How to create an SMTP Trace Listener http://www.codeproject.com/KB/trace/smtptracelistenerarticle.aspx
- Writing custom .NET trace listeners http://www.codeproject.com/KB/dotnet/customnettracelisteners.aspx
Сайт разработчика: http://www.componentspace.com/Products/TraceListeners.aspx
Последняя дата обновления:License: платная
Расширение стандартных TraceListeners.
Стандартные .NET диагностические файлы журнала может стать громоздким. Было бы неплохо, если лог-файлы могли быть ограничены до приемлемых размеров и была возможность автоматически создавать циклические файлы.
Данный компонент является полнофункциональным, простым в использовании, который включает в себя циклическое создание файлов, HTTP, SMTP и MSMQ слушателей трассировки, которые расширяют класс System.Diagnostics.TraceListener. Слушатели трассировки полностью настраиваемые с помощью XML-файла конфигурации приложения.
Возможности:
- Цикличность файлов трассировки
- Полнота конфигурации
- Определение расположения, основного имени и максимального размера файлов
- Автоматическое включение временных меток в выводы трассировки
- Идентификаторы процесса и потока могут быть автоматически включены
- Конфигурация названия файла: <directoryName>\<filePrefix><sequenceNumber><fileSuffix>
- Формат строки вхождения в лог-файл.
- Различные цели:
- HTTP – вывод по указанному адресу
- SMTP
- MSMQ
Сайт разработчика: http://msdn.microsoft.com/en-us/library/dd203099.aspx и http://www.codeplex.com/entlib Последняя дата обновления: patterns & practices – Enterprise Library
EnterpriseLibrary– это проект с открытым исходным кодом от группы Patterns&Practices в Microsoft
В состав библиотекиMicrosoft'sEnterpriseLibrary (последняя версия 4.1, анонсируется выход 5й версии) входит много компонентов:
- The Caching Application Block
- The Cryptography Application Block
- The Data Access Application Block
- The Exception Handling Application Block
- The Policy Injection Application Block
- The Security Application Block
- The Unity Application Block
- The Validation Application Block
- The Logging Application Block
Смысл этих блоков виден из названия. На всех останавливаться не буду, но если кого-то названия заинтересовали, то тот может почитать подробно о каждом блоке на сайтах, представленных выше. Остановимся на последнем.LoggingApplicationBlock использует функциональность TraceListeners, расширяя его.
Enterprise Library Logging Application Block упрощает внедрение функций протоколирования.Разработчики могут использовать блок протоколирования записи информации в различные местах:
- Журнал событий Windows
- База данных
- Очередь сообщений
- Текстовый файл
- A Windows Management Instrumentation (WMI) event
- Пользовательские расширения application block
Встроено в студию:
Архитектура:
Удобство кода на 3 Удобство использования на 3
4. NetTrace
Сайт разработчика: http://www.codeproject.com/KB/trace/NetTrace.aspx
Последняя дата обновления: 18 декабря 2006 годаLicense: нет
NetTrace простой debug tracer, который поставляется с собственным классом отладки и встроенным диалогом, который позволяет разработчикам настроить протоколирование.
Много всяческих настроек по работе с лог-информацией (System.Diagnostics). Легкость понимания на троечку. Вывод только консоль или файл. Программная настройка. Расширяемость логгеров. Используемость на 2 (недоработана, не стал бы в коммерческих проектах использовать)
5. NSpring
Сайт разработчика: http://sourceforge.net/projects/nspring/Последняя дата обновления: 22 октября 2003
License: BSDLicense
Функциональность:
- Высокая производительность (сравнивают стандартные DebugandTrace)
- Стабильная работа в многопоточном приложении
- Легка в использовании
- Легко расширяется (свои loggers, filters, exception handlers, event formatters, data formatters, and log levels with ease, usually by just instantiating an object or implementing one or two methods)
- Уровни логов сообщений.
- Гибкая фильтрация сообщений. Признаком хорошего протоколирования является поддержка возможности выборочно отказаться от данных, основанных на более глубоких критериях, чем могут быть предоставлены с использованием уровней.
- Гибкое форматирование: вывод данных в нужном формате, например xml
- Поддержка данных. Удобный вывод сложных объектов (массивы, списки и словари) (FlatDataFormatter, TreeDataFormatter, XMLDataFormatter)
- Поддержка нескольких логгеров.
- Поддержка контекста данных (system/application/thread)
- Поддержка событий
- Разные логгеры: ConsoleLogger, DatabaseLogger, DebugLogger, EmailLogger, FileLogger (сархивацией), MessageQueueLogger, StreamLogger, TraceLogger (write their output to System.Diagnostics.Trace), WindowsEventLogger
- Программная настройка
Сайт разработчика: http://www.theobjectguy.com/dotnetlog/
Последняя дата обновления: не нашел инфLicense:
- Постоянная поддержка.
- Настройка из конфига (файл настраивали). В примерах основная настройка идет все же через API.
- Работа в веб-приложении
- Работа в многопоточности
- Обертка логгеров друг другом
- Расширяемый
- Фильтрация
- Форматирование
- Интегрируема с MS Visual Studio 2008 (просмотр отладочной информации в окне)
Цели:
- Файл
- Windows event log
- TCP socket
- Память
- email
- Console, Debug, Trace
На её базе уже делаются другие с большей направленностью. К примеру, SPLog4net. SPLog4net – 2 классадляиспользованияlog4netвMOSS 2007: · Log4net ULS Appender · Log4net serializableоболочка, котораяможетбытьиспользованав workflows (implements the ILog interface and wraps a log4net concrete logger) Не будем останавливаться подробней на SPLog4net. Пойдем дальше. Сайт разработчика: http://logging.apache.org/log4net/ Последняя дата обновления: 18 сентября 2006 (Релиз: 1.2.10) License: ApacheLicense 2.0 log4net - логгер для .net-приложений, позволяющий выводить любые сообщения в файл, несколько файлов, в БД или еще куда-нибудь. Кроме самого пользовательского сообщения, может вывести подробную информацию (время, класс, метод, и т.д., где был вызван вывод данного сообщения). При разработке этой библиотеки протоколирования разработчики уделяли внимание двум целям: скорость работы и гибкость. Есть возможность переконфигурировать протоколирование во время выполнения программы с помощью файла конфигурации. Log4netсодержит три основные компоненты: · Логгеры (loggers) · Appenders. Совместно с Filter позволяет отфильтровать сообщения по некоторому признаку. Фильтры бывают по типу сообщения (ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF) и по тексту сообщения. · Layouts - определяется формат вывода сообщений в файл Эти три компонента работают вместе, чтобы позволить разработчикам писать отладочную информацию в зависимости от вида сообщения и уровня, также управляют во время выполнения программы как сообщения будут отформатированы и куда они должны быть записаны. Функциональность: · Оптимизирована по скорости · Поддержканескольких.NET Framework (1.0, 1.1, 2.0, Compact Framework 1.0, Mono 1.0/2.0, CLI 1.0 Compatible) · Направление сообщений в разные хранилища-получатели: текстовые файлы, в Event Log Windows, в СУБД итд · Иерархическая архитектура протоколирования. Позволяет каждому компоненту иметь свой лог.Позволяет протестировать отдельный компонент, не засоряя логи от других компонентов. · Конфигурация через xml-файл. Так же есть возможность конфигурировать программно. · Динамическая конфигурация. Log4net следит за файлом конфигурации. И при его изменении производит переконфигурирование без прерывания рабочего процесса. · Контекст логирования. GlobalContext и ThreadContext разрешают приложению хранить данные контекста, которые прилагаются к логируемому сообщению. · Модульный (плагины)ирасширяемый дизайн · Высокая производительность и гибкостью · Потокобезопасна · Проверенная архитектура. log4netоснован на весьма успешной библиотеке протоколированияlog4j, в развитии с 1996 года. Это популярная и проверенная архитектуры до сих пор была портирована на 12 языков. Пример записи лога каждый в день новый, чтобы частью имени файла была дата: <appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender"> <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> <file value="debug"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyyMMdd"/> <staticLogFileName value="false"/> <maxSizeRollBackups value="10"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5p [%d] [%C.%M] %m%n"/> </layout> </appender>
Удобства:Документация никакая, только на примерах (описание конфигурирования и примеры использования). НебольшиеописаниявSDK. Есть сторонняя утилита просмотра логов: http://yourlog4netviewer.codeplex.com/
8. NLog
Сайт разработчика: http://nlog-project.org/ Последняя дата обновления: Постоянная поддержка License:BSDlicense SDK отличное. NLog - NET библиотека, которая позволяет добавлять сложные трассировки кода для приложения, обеспечивая функциональность: · Поддержка нескольких.NET Framework (1.0, 1.1, 2.0, Compact Framework 1.0/2.0, Mono 1.0/2.0) · Конфигурирование через xml-файл. По сравнению с log4net более краткая конфигурация (минимум 8 строчек) <nlog><targets><target name="f" type="File" layout="${longdate} ${message} ${exception:format=tostring}"/></targets><rules><logger name="*" writeTo="f"/></rules></nlog> · Вместо замысловатых настроек фильтрации в log4net, в NLog можно задать условие с помощью выражения (пример ниже), язык выражений поддерживает логические операторы: <targetname="file"xsi:type="FilteringWrapper"condition="contains('${message}','1')"> <targetxsi:type="File"fileName="${basedir}/file.txt" /></target> · Возможность определять дополнительные аспекты логирования (асинхронность, буферизация, и т.д.) с помощью вложенных тэгов target. · Интеграция со Студией: файл проекта есть + Intellisense(TM). · Цели: файл, консоль, email, БД, MSMQ основе очередей сообщений, Журнал событий и тд. · Каждое трассировочное сообщение может сопровождаться контекстуальной информацией, которые будут отправлены к цели (target) (может использоваться как в сообщении так и в имени файла): текущие дата и время в различных форматах, уровень журнала, имя источника кода (имя класса и метода где было выведено сообщение), трассировки стека / информацию о методе, излучаемой отслеживания сообщений, Значения переменных окружения, информация об исключениях, имена машин, процессов и потоков и тд · Расширяема: своиtarget, Layout RendererиFilter · Контекстная информация содержит 48 переменных (LayoutRenderers). · Уровни сообщений o Trace – Очень большой лог сообщений, по частоте и объему o Debug –Менее детальный и/или менее частые сообщения отладки o Info – Информационные сообщения o Warn – Предупреждения, которые не отображаются пользователю приложения o Error – Сообщения об ошибках o Fatal – Фатальные сообщения об ошибке. После роковой ошибки приложения обычно прекращают свою работу · Динамическая конфигурация (автоматическая реконфигурация). Файл конфигурации автоматически считывается программой при старте. В длительных процессах (таких как Windows сервис или ASP.NET приложение) иногда желательно временно увеличить уровень логирования без остановки приложения. NLog может мониторить за файлами конфигурации и перечитать каждого из них, если они были изменены. Чтобы разрешить этот механизм, вы должны просто установить <nlogautoReload="true" /> в вашем файле конфигурации. Обратите внимание, что автоматическая реконфигурация включает поддержку файлов, так что если один из файлов изменился, то будет перегружена вся конфигурация. · Разделения файла конфигурации на несколько. · Создание внутренних переменных для файла конфигурации<nlog>
<variable name="logDirectory" value="${basedir}/logs/${shortdate}"/>
<targets>
<target name="file1" xsi:type="File" filename="${logDirectory}/file1.txt"/>
<target name="file2" xsi:type="File" filename="${logDirectory}/file2.txt"/>
</targets>
</nlog>
· Устранение неполадок протоколирования, возникших из-за протоколирования. Иногда приложение не пишет в лог-файлы, хотя вроде протоколирование правильно настроено. Этому может быть много причин, по которым журналы не пишутся.Наиболее часто встречающейся проблемой являются разрешениями (права доступа). · Программное конфигурирование · Асинхронная обработка, обертки и сложные цели. NLog предоставляет обертку и сложные цели, которые изменяют поведение других целей, добавив функции, такие как: o асинхронной обработкой (обвернутая (wrapped) цель запускается в отдельном потоке) o retry-on-error Повторить-при-ошибке o Балансировка нагрузки (циклический целей) o Буферизация o Фильтрация o Резервное копирование целей (при отказа) o и тд Нет ограничений по глубине. Например, чтобы добавить асинхронное протоколирование с функциональностью повтора-при-ошибке:<targets>
<target name="n" xsi:type="AsyncWrapper">
<target xsi:type="RetryingWrapper">
<target xsi:type="File" fileName="${file}.txt"/>
</target>
</target>
</targets>
Т.к. асинхронная обработка является общим сценарием, NLog поддерживает сокращенную запись, чтобы все цели могли явно не указывать обертку. Нужно просто установить <целиAsync="true"/>, и все ваши цели будут обобщены с целевой AsyncWrapper. · Производительность.
9. SmartInspect
Сайт разработчика: http://www.gurock.com/products/smartinspect/ Последняя дата обновления: Постоянная поддержка License: Платная. Цена зависит от количества пользователей. SmartInspect – библиотека протоколирования для отладки и мониторинга за приложениямии включает в себя уникальный просмоторщик отладочной информации в режиме реального времени. Конкурент log4netи NLog. Платная. Из функциональных возможностей, отличающую её от других, можно отметить следующие: · См. сводную таблицу
10. ELMAH
Сайт разработчика: http://code.google.com/p/elmah/ Последняя дата обновления: 17августа 2009года. Лицензия: ApacheLicense 2.0 ELMAH (ErrorLoggingModulesandHandlers – модулииобработчикипротоколирования) - который полностью расширяемый. Он может быть динамически добавлен к работающемуASP.NET веб-приложению, или даже во все веб-приложений ASP.NET на машине, без необходимости повторной компиляции или повторного развертывания. После того ELMAHнастроен соответствующим образом и добавлен в работающее веб-приложение, мы получаем следующую функциональность, не изменив ни строчки кода: · Протоколирование почти всех необработанных ошибок · Веб-страницы для удаленного просмотра всего журнала записанных исключений. · Веб-страницу для удаленного просмотра всей подробной информации о любом записанном исключении. · Во многих случаях можно просмотреть оригинальные желтые экраны смертиASP.NET, создаваемые для данного исключения, даже с выключенным режимом CustomErrors. · Email оповещение о каждой возникшей ошибке в то время когда это происходит. · RSS ленту о 15 последних ошибках в журнале протоколирования. Дополнительные функции: · Протоколирование ошибок в несколько хранилищ
- Microsoft SQL Server
- Oracle(OracleErrorLog)
- SQLite (версия 3) базы данных
- MicrosoftAccess(AccessErrorLog)
- VistaDB(VistaDBErrorLog)
- Loose XML файлы
- Оперативной памяти (в памяти)
Комментариев нет:
Отправить комментарий