NLog包装类的生活方式

时间:2017-02-23 06:59:31

标签: c# nlog simple-injector

我有五个不同的记录器和一个包装类:

internal class CommonNLogResolver : ICommonLogger
{
    private readonly NLog.Logger commonLog;
    private readonly NLog.Logger errorLog;
    private readonly NLog.Logger dataBaseLog;
    private readonly NLog.Logger logExceptionLogger;
    private readonly NLog.Logger clientLogger;

    public CommonNLoggerResolver()
    {
        commonLog = NLog.LogManager.GetLogger(Constants.CommonLog);
        errorLog = NLog.LogManager.GetLogger(Constants.ErrorLog);
        dataBaseLog = NLog.LogManager.GetLogger(Constants.DBLog);
        logExceptionLogger = NLog.LogManager.GetLogger(Constants.LogExceptionLog);
        clientLogger = NLog.LogManager.GetLogger(Constants.ReportLog);
    }
}

我查看NLog中的LogFactory.cs,因为它有一个logger缓存,我不知道什么样的生活方式适合我的包装类。

所以我的问题是我应该注册这个课程 singleton transient 还是范围

我也使用SimpleInjector进行依赖注入。

1 个答案:

答案 0 :(得分:1)

NLog是线程安全的,因此您可以安全地重用您的记录器。你可以成为Singleton。