Отслеживание пользователя с помощью log4net для веб-сайта - PullRequest
4 голосов
/ 09 июня 2010

Я ищу лучший способ отслеживания пользователя на веб-сайте asp.net.
Мы используем log4net для регистрации некоторых бизнес-действий (войдите на эту страницу, нажмите кнопку и т. Д.).Но для нескольких пользователей файл журнала не может быть легко прочитан.

Поэтому мне нужно добавить свойство 'UserName' в файл конфигурации следующим образом:

 <conversionPattern value="%date [%thread] - %property{UserName} - %-5level  - %logger - %message%newline"/>

У вас есть какие-либоИдея о способе установки 'UserName'?

спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 09 июня 2010

Вы можете определить имя пользователя (или любое другое) свойство следующим образом:

this.SetThreadContext("UserName", userName);

при условии, что userName содержит имя пользователя.

Редактировать (Что вы действительно хотите сделать):

Напишите оболочку для log4net (с интерфейсом) и создайте какой-нибудь метод, например SetUserName, например:

public void SetUserName(Func<string> getUserName)

Этот метод вы вызываете в приложениизапустите, и вы передадите какой-нибудь метод, который возвращает текущего вошедшего в систему пользователя (из HttpContext).Вам нужно будет где-то хранить делегат, возможно, статическую переменную.Затем у вас есть методы для регистрации на различных уровнях, и каждый отдельный метод вызывает делегат (Func<string> getUserName) и устанавливает свойство контекста потока, как показано выше.Таким образом, вам не нужно устанавливать свойство контекста потока вручную перед каждым вызовом регистратора ...

0 голосов
/ 09 июня 2010

Имеется следующее свойство

   %username the Windows identity of user making the log entry; slow 

проверьте более подробно: http://www.beefycode.com/post/Log4Net-Tutorial-pt-4-Layouts-and-Patterns.aspx

проверьте эту статью: Захват веб-событий в log4net

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