asp.net记录器每个web请求的用户信息
本文关键字:请求 用户 信息 web net 记录器 asp | 更新日期: 2023-09-27 18:20:44
希望我能很好地解释我的问题。
我有一个网络应用程序,它与桌面应用程序共享一个域层。您可以将应用程序作为网站或桌面应用程序,但域逻辑是相同的,因此两者共享该代码。
我想记录域层,我想知道用户做了什么,使用桌面应用程序很容易,我可以使用一个包含用户信息的静态记录器,因为我只记录了一个用户,但在网络应用程序中,我可以同时有很多用户,所以我不能使用相同的方法。
我想避免在域层的每次调用中传递用户信息。
感谢
最后,我发现解决这一问题的唯一方法是使用具有"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");