繁体   English   中英

每个Web请求的asp.net记录器用户信息

[英]asp.net logger userinfo per web request

希望我能很好地解释我的问题。

我有一个Web应用程序,它与桌面应用共享一个域层。 您可以将应用程序作为网站或桌面应用程序使用,但是域逻辑是相同的,因此两者共享该段代码。

我想登录域层,我想知道用户做了什么,桌面应用程序很简单,我可以使用静态记录器记录用户信息,因为我只有一个用户登录,但是在Web应用程序中我可以同时有很多,所以我不能使用相同的方法。

我想避免在域层的每次调用中传递用户信息。

谢谢

好吧,最后,我发现要解决这个问题的唯一方法是使用一个具有'ThreadStatic'成员的帮助程序/管理器,每个线程都会有所不同,因为每个并发的webrequest都将使用不同的线程进行管理。 我可以一开始就配置logget,以后再在代码中使用它。 希望有人能找到更好的解决方案。

public static class LoggerHelper
{
    [ThreadStatic]
    static public ILogger _logger;
    static public ILogger Logger
    {
        get { return _logger; }
        set { _logger = value; }
    }
}

在网络服务中:

public bool TestLogger()
{
//initialize logger.
AmfContext.Logger = _logger = new WebLogger();
//call internal logic
.............
}

在代码中:

LoggerHelper.Logger.Info("Log line example");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM