2017-08-08 135 views
0

我在一个解决方案中有8个控制台项目(我打算将它们转换为未来的服务),并且互相引用。我打算创建一个ILogger接口和Logger类来封装Nlog方法,因为我不想在每个项目中引用nlog。并将该接口从Core项目传递给其他所有构建参数。像在一个解决方案中使用NLog处理多个项目c#

using Core 
... 
ILogger logger = new Logger(); 

问题的东西是:

1)我可以使用一个配置,每记录?我使用here的想法。主要是调用者信息属性来获取程序集名称等。所以我不需要不同的日志文件或设置来确定日志的来源。

2)我应该这样做,并创建ILogger的8个实例,而不是在核心程序集的静态类上创建,并根据需要每次调用它的方法。我已经在其他程序集中引用了Core,因此不会再提供新的参考。我对8个ILoggers的关注是并发写入一个文件/数据库。

回答

0

1)我可以为每个记录器使用一个配置吗?我使用这里的想法。主要是调用者信息属性来获取程序集名称等。所以我不需要不同的日志文件或设置来确定日志的来源。

是的,配置应该在解决方案的启动项目中。

2)我应该这样做,并创建ILogger的8个实例,而不是在核心程序集的静态类上创建,并根据需要每次调用它的方法。我已经在其他程序集中引用了Core,因此不会再提供新的参考。

推荐每个类的实例。您可以使用LogManager.GetLogger(myClassName),否则难以过滤日志所来自的痕迹。

我对8个ILoggers的关注是并发写入一个文件/数据库。

你可以组一个缓冲目标的消息,因此写操作进行分组。见the docs of the Buffering Wrapper target

相关问题