【发布时间】:2016-11-21 13:11:45
【问题描述】:
我需要创建一个应该有范围的记录器(类似于TransactionScope 类)。
这是一个草图:
public class Logger
{
private static Logger instance;
public void BeginScope(string scopeName)
{
//...
}
public static Logger Instance()
{
// Singleton code
return instance;
}
public void Log(string message)
{
Console.Writeline(string.Concat(scopeName, message));
}
public void EndScope()
{
//...
}
}
如何创建记录器范围,以便在开始范围后,如果我创建许多类并在那里使用单例记录器,它将使用相同的范围,但不发送依赖项?当我在类中登录时,我不能将范围用作依赖项。
如果我有代码:
for(var i = 0;i>2000;i++)
{
Logger.BeginScope("scope_" + i);
//create classes that contain methods that logs data
Logger.EndScope();
}
它应该在每个循环中创建一个范围。
【问题讨论】:
-
你知道NLog吗?他们可能已经实现了您可能需要的所有日志记录功能,甚至是您目前可能不知道的那些功能。
-
我需要创建关于范围的概念证明,记录器只是一个例子......
-
话虽如此,我不明白你的问题。试图弄清楚 NLog 是否可以做你想做的事,但不确定那是什么。
-
我不需要记录器,我需要创建一个使用上面介绍的范围的概念证明。为了创建一个实际示例,我选择了记录器。
-
为什么不直接添加
private static string scopeName?它不会递归地工作,也不会在多线程代码中工作,但除此之外它很简单。