每个Web请求的asp.net logger用户信息

时间:2015-11-06 08:31:14

标签: c# asp.net logging

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

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

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

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

由于

1 个答案:

答案 0 :(得分:0)

嗯,最后,我发现接受这种方法的唯一方法是使用一个带有' 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");