I have five different logger and a wrapper class for them :
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);
}
}
I look at the LogFactory.cs in NLog and since it has a cache for logger I don't know what lifestyle is appropriate for my wrapper class.
so my question is should I register this class singleton , transient or scope?
also I'm using SimpleInjector for Dependency Injection.
NLog is thread-safe, so you can safely reuse your logger. You can make it Singleton.