Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 在Azure上实现低开销分布式登录的更好选择是什么?_Logging_Azure - Fatal编程技术网

Logging 在Azure上实现低开销分布式登录的更好选择是什么?

Logging 在Azure上实现低开销分布式登录的更好选择是什么?,logging,azure,Logging,Azure,在Azure上实现低开销分布式日志记录的更好方法是什么 我们使用log4net作为多坦能Azure Web角色的日志库。log4net ADO.Net appender用于将所有错误记录到SQL Azure数据库中。为了按客户机/用户筛选日志,我们使用了一些log4net.GlobalContext属性,如下所示: log4net.GlobalContext.Properties["Domain"] = new Log4netDomainProvider(); log4net.GlobalCon

在Azure上实现低开销分布式日志记录的更好方法是什么

我们使用log4net作为多坦能Azure Web角色的日志库。log4net ADO.Net appender用于将所有错误记录到SQL Azure数据库中。为了按客户机/用户筛选日志,我们使用了一些log4net.GlobalContext属性,如下所示:

log4net.GlobalContext.Properties["Domain"] = new Log4netDomainProvider();
log4net.GlobalContext.Properties["Username"] = new Log4netUsernameProvider();
每个“提供者”都只是一个简单的类,它重写了ToString()方法。当log4net调用ToString()时,我们从当前会话中获取一个值(本文将讨论此技术)


我希望这能解决你的问题。如果是这样的话,您可能想在log4net日志上下文中查看这篇文章。

谢谢。我会调查的。你也试过RoleManager.WriteToLog吗?如果是这样,您的经验是什么?我们查看了一下,但我们不想手动筛选blob存储中的一堆日志。我们的要求之一是通过客户/用户组合轻松过滤。我在回答中没有提到这一点,但我们也使用log4net.GlobalContext属性来获取远程ip地址和机器名。如果您想更详细地介绍过滤选项,可以使用Azure服务管理API在角色启动时将实例#、部署名称等存储在静态变量中。然后还可以为这些变量创建log4net“提供者”。
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;
    }
}