Log4net Adonet Appender: перемешивание данных при запуске нескольких экземпляров приложения - PullRequest
2 голосов
/ 15 июля 2011

Сценарий: веб-приложение asp.net было развернуто на удаленном IIS и настроено для входа в базу данных oracle. Таблица журнала содержит следующие столбцы: Login_ID, Log_message, Querystring, ipaddress. Таким образом, развернутый URL просматривался из разных систем, используя разные login_ids

Проблема: Когда приложение запускается в разных системах с разными идентификаторами входа и разными потоками, идентификатор входа одного потока / системы вставляется для другого потока / системы. Но когда запускается один экземпляр приложения, значения вставляются правильно.

Пример: при входе в систему с идентификатором X сайт просматривается в потоке «A», а другой пользователь с логином Y просматривает сайт в потоке «B». Имя входа «X» вставляется в записи с потоком «B» и потоком «A»

Код:

user = (User) Session ["User"];

log4net.GlobalContext.Properties ["LOGIN_ID"] = user.loginid;

Исследование. После просмотра нескольких сайтов я узнал, что контексты log4net не работают должным образом с asp.net.

http://piers7.blogspot.com/2005/12/log4net-context-problems-with-aspnet.html

http://piers7.blogspot.com/2007/07/log4net-in-aspnet-redux-implement.html

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

1 Ответ

1 голос
/ 15 июля 2011

Проверьте мой ответ на другой вопрос здесь .

Последнее предложение в моем ответе может быть самым легким для начала работы, и оно может сделать именно то, что вы хотите.Мое предложение основано непосредственно на тех же ссылках, на которые вы ссылаетесь выше.

...