在Azure上实现低开销分布式日志记录的更好方法是什么?
发布于 2011-06-29 02:15:42
我们使用log4net作为我们的多tennant Azure Web角色的日志库。log4net ADO.Net附加器用于将所有错误记录到SQL Azure数据库中。要按客户端/用户过滤日志,我们使用一些log4net.GlobalContext属性,如下所示:
log4net.GlobalContext.Properties["Domain"] = new Log4netDomainProvider();
log4net.GlobalContext.Properties["Username"] = new Log4netUsernameProvider();每个“提供者”只是一个覆盖ToString()方法的简单类。当log4net调用ToString()时,我们从当前会话中获取一个值(此SO answer将讨论此技术)。
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日志记录上下文的很好的write-up。
https://stackoverflow.com/questions/6501827
复制相似问题