相关疑难解决方法(0)

将记录器作为单身人员是一种好习惯吗?

我有习惯将记录器传递给构造函数,如:

public class OrderService : IOrderService {
     public OrderService(ILogger logger) {
     }
}
Run Code Online (Sandbox Code Playgroud)

但这很烦人,所以我已经使用了它一段时间了:

private ILogger logger = NullLogger.Instance;
public ILogger Logger
{
    get { return logger; }
    set { logger = value; }
}
Run Code Online (Sandbox Code Playgroud)

这也很烦人 - 它不干,我需要在每个班级重复这个.我可以使用基类,但是再次 - 我正在使用Form类,所以需要FormBase等等.所以我认为,暴露ILogger的单例会有什么不利因素,所以我们知道在哪里得到logger:

    Infrastructure.Logger.Info("blabla");
Run Code Online (Sandbox Code Playgroud)

更新:正如Merlyn正确注意到的那样,我应该提一下,在第一和第二个例子中,我正在使用DI.

.net c# logging singleton dependency-injection

75
推荐指数
5
解决办法
3万
查看次数

我可以在ASP.NET MVC 5(不是mvc核心)项目中使用ILoggerFactory吗?

我想在我的asp.net MVC 5项目中创建一个日志框架.我的Startup类看起来像这样:

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我查看ASP.Net MVC Core项目时,Startup类是这样的:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();
Run Code Online (Sandbox Code Playgroud)

是否可以在MVC 5中包含ILoggerFactory?如果可以,我应该如何初始化/注册它?是否需要在global.asax或Startup中完成?

asp.net-mvc logging asp.net-mvc-5 asp.net-core-mvc

8
推荐指数
2
解决办法
3739
查看次数