希望我能很好地解释我的问题。
我有一个Web应用程序,它与桌面应用程序共享一个域层。您可以将应用程序作为网站或桌面应用程序,但域逻辑是相同的,因此两者都共享该段代码。
我想记录域层,我想知道用户做了什么,桌面应用程序很简单,我可以使用带有用户信息的静态记录器,因为我只记录了一个用户,但是在webapplication中我可以同时拥有很多,所以我不能使用相同的方法。
我想避免在域层的每次调用中传递用户信息。
由于
答案 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");