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

本文关键字:请求 用户 信息 web net 记录器 asp | 更新日期: 2023-09-27 18:20:44

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

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

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

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

感谢

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

最后,我发现解决这一问题的唯一方法是使用具有"ThreadStatic"成员的助手/管理器,这将因每个线程而异,因为每个并发的Web请求都将由不同的线程管理。我可以在一开始就对logget进行分类,然后在代码中使用它。希望有人能找到更好的解决方案。

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

在web服务中:

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

代码中:

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