У вас есть 3 варианта:
Log-файл - хороший вариант, который я предпочитаю использовать, потому что я могу легко иметь дело с записями и смотреть через него. Я даже создаю каталоги для файлов журнала со следующим форматом AppName \ YYYY \ MM \ DD \ yourfile.log, чтобы я мог видеть, как выглядели вещи в определенный день (в некоторых случаях есть годы регистрации). Threading не является проблемой. Вы можете сделать его потокобезопасным. Это довольно безопасный метод, потому что у вас почти всегда будет доступ к записи на диск, если ваш диск не будет заполнен, какой из них можно будет обрабатывать.
База данных - также хорошо, потому что вы можете легко ее запросить. Он имеет большие шансы на отказ и не должен использоваться для первичной регистрации на мой взгляд. Если у вас БД идет, возникают проблемы, которые вызывают исключение, где вы его сохранили? Ваша БД может отставать и получать тайм-ауты и т. Д. Это также может повлиять на производительность вашего БД в зависимости от того, сколько вы регистрируете.
Журнал системных событий - это отлично подходит для 1 или 2 или обоих. Журнал событий будет почти всегда доступен, и это то, что использует Windows (при условии, что на сервере Windows) это очень безопасно. Вы также можете создавать особые исключения для приложения, чтобы вы могли отфильтровать все те статьи, которые вы не хотите беспокоиться. Тем не менее, он хранит только определенную сумму, поэтому ваша история может быть коротким в зависимости от того, сколько ее выбрасывают, чтобы вы могли экспортировать эти данные по расписанию.
Большинство моих приложений использует комбинацию 1 и 2. Мы свернули собственную регистрацию и она работала хорошо для нас, но есть некоторые большие библиотеки там, чтобы помочь с этим. У нас также есть встроенный инструмент для мониторинга наших журналов событий сервера для наших конкретных элементов и, когда это возможно, уведомлять правильных людей на основе определенных критериев. Он настроен как процесс вытягивания с другого сервера, так что даже когда на сервере возникают проблемы, когда, возможно, не удается отправить уведомление, сервер мониторинга должен иметь возможность в конечном итоге получить данные и выполнить правильное уведомление.
Ключ, в зависимости от того, насколько важно регистрировать вас и ваше приложение, является избыточным. Если вы переходите по маршруту DB, у вас есть резервная копия. Если вы идете по файловому маршруту, выполните резервное копирование. В большинстве случаев регистрация может завершиться неудачей в определенных случаях, поэтому важно иметь несколько способов хранения необходимой вам информации. Это сэкономило мне массу времени, выясняя проблемы, когда по каким-то причинам один из методов ведения журнала не прошел.
Для ASP.Net, как только вы узнаете [Elmah] (http://code.google.com/p/elmah/), вы больше не будете искать что-либо еще. Также работает с Web API с небольшой помощью. –