C # Создание системы журналов - PullRequest
3 голосов
/ 13 октября 2009

Я читал следующую статью: http://odetocode.com/articles/294.aspx

Эта статья вызвала у меня много вопросов относительно логов. (Я не знаю, должен ли я сделать это в отдельных вопросах ... но я не хочу спамить stackoverflow.com с моими вопросами)

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

Второй, есть ли какой-то определенный класс для работы с «бревнами»? Я прочитал несколько веток на эту тему и не нашел ответов на свои вопросы.

Заранее спасибо.

Ответы [ 8 ]

19 голосов
/ 13 октября 2009

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

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

6 голосов
/ 13 октября 2009

Если вы не хотите писать систему для образовательных целей, я искренне думаю, что вам лучше всего придерживаться log4net или nlog .

И, кроме того, вам, вероятно, будет лучше изучить код для этих систем, чем писать свой собственный.

Что касается вашего вопроса, я бы привязался к текстовому файлу и буферизовал сообщения перед тем, как выложить их на диск.

4 голосов
/ 13 октября 2009

Зачем изобретать колесо? Вы можете проверить блокировку журнала MS Enterprise.

2 голосов
/ 13 октября 2009

определенно не xml.

с xml, вам нужно будет прочитать все, проанализировать, добавить что угодно, затем снова сгенерировать весь xml и записать обратно на жесткий диск. каждый раз, когда вы что-то регистрируете.

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

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

таким образом, вы также можете попросить пользователя проверить его (если вы помогаете ему по телефону).

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

0 голосов
/ 30 ноября 2009

Если вы имеете дело с ASP.NET, ELMAH - еще один хороший инструмент ведения журнала. Очевидно, это то, что Microsoft Скотт Хансельман использует .

Для требуется дополнительный код , чтобы он работал с атрибутом HandleError в ASP.NET MVC.

0 голосов
/ 30 ноября 2009

NLog и log4net предоставляют богатый API ведения журналов, но ни один из них не решает проблемы, с которыми вы сталкиваетесь, управляя и анализируя все данные в ваших файлах журналов.

Если вы хотите рассмотреть коммерческий инструмент, взгляните на GIBRLATAR - он работает с NLog и log4net , а также собирает полезные показатели производительности . Самое главное, GIBRALTAR предоставляет отличные инструменты для управления и анализа журналов .

0 голосов
/ 13 октября 2009

Для своих приложений я решил написать в БД. Так мне легче читать логи. Однако я не схожу с ума, как это делают некоторые люди, я регистрирую только то, что мне нужно, и ничего больше.

Не так давно я попробовал log4net, и он мне совсем не понравился. Это было много мусора - просто написать в БД и отправить электронное письмо. Я закончил тем, что написал собственный класс регистрации, и это было всего ~ 200 строк и заняло всего несколько часов. Это прекрасно работает, у меня нет другой зависимости, и ее легко изменить.

0 голосов
/ 13 октября 2009

Что касается файла в сравнении с базой данных, выбор за вами.

Файловые журналы обеспечивают более высокую производительность, но при этом не имеют доступа.

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

Если вы хотите предоставить доступ к этим журналам, проанализировать их и т. Д., Вы должны сохранить их в базе данных.

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

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