Каковы наилучшие варианты для достижения распределенных журналов с низкими издержками в Azure? - PullRequest
0 голосов
/ 28 июня 2011

Каковы наилучшие способы обеспечения распределенного ведения журнала с минимальными издержками в Azure?

1 Ответ

1 голос
/ 28 июня 2011

Мы используем log4net в качестве библиотеки журналов для нашей многопользовательской веб-роли Azure. Приложение ADO.Net log4net используется для регистрации всех ошибок в базе данных SQL Azure. Чтобы фильтровать журналы по клиенту / пользователю, мы используем несколько свойств log4net.GlobalContext, например:

log4net.GlobalContext.Properties["Domain"] = new Log4netDomainProvider();
log4net.GlobalContext.Properties["Username"] = new Log4netUsernameProvider();

Каждый «Провайдер» - это простой класс, который переопределяет метод ToString (). Когда ToString () вызывается log4net, мы получаем значение из текущего сеанса (этот метод обсуждается в этом SO ответе ).

public class Log4netDomainProvider
{
    public override string ToString()
    {
        string retval = null;

        if (HttpContext.Current == null)
            retval = "HttpContext is null";
        else if (HttpContext.Current.Session == null)
            retval = "HttpContext.Current.Session is null";
        else
            retval = HttpContext.Current.Session["Domain"];

        return retval;
    }
}

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

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