Получить идентификатор записи для log4net ADONetAppender - PullRequest
3 голосов
/ 18 августа 2010

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

http://logging.apache.org/log4net/release/config-examples.html

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

Ответы [ 3 ]

4 голосов
/ 19 августа 2010

Помимо написания собственного аппендера, как предложил floyddotnet, вы можете подумать:

  1. Использовать GUID.Вы можете легко сгенерировать его в своем приложении и послужить большинству ваших целей.Недостаток: клиентам может быть неудобно, если они попытаются рассказать об этом в службу поддержки по телефону.Если у вас есть только поддержка по электронной почте, возможно, это не проблема.
  2. Подумайте о создании номера инцидента вне рамок ведения журнала.Быстрый вызов хранимой процедуры, которая возвращает идентификатор, который вы сохраняете в пустом поле в вашей таблице журнала.
  3. Сочетание перечисленного: используйте Guid, и после входа в систему вы вызываете хранимую процедуру, которая создает инцидент и возвращает идентификатор.

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

1 голос
/ 18 августа 2010

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

Что я сделал при использовании log4net для таких условий, так это включил дату и времяотметьте в сообщении, которое идет до миллисекунды, и представьте его пользователю в качестве ссылочного номера.Затем вы можете выполнить простой запрос SQL, чтобы получить сообщение в таблице журнала.

0 голосов
/ 18 августа 2010

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

Как написать appender для log4net:

http://www.alteridem.net/2008/01/10/writing-an-appender-for-log4net/

Описание контекста:

http://logging.apache.org/log4net/release/manual/contexts.html

...