Registro de NLog ILogger con inyector simple
¿Hay alguna manera de obtener el contexto para poder recuperar elloggerName
y useLogManager.GetLogger(loggerName)
en lugar deLogManager.GetCurrentClassLogger()
?
Me di cuentacontainer.RegisterConditional()
tiene acceso al contexto.
Además, quiero evitar soluciones comoSimpleLogging.NLog por ahora.
Finalmente, estoy dispuesto a aceptar que este no es el enfoque correcto. Por cierto, AOP es una opción que ya he explorado (¿Es una buena práctica tener logger como singleton?)
Nota: soy consciente de queGetCurrentClassLogger()
obtiene la misma información que recuperaría con la reflexión de .NET.
using NLog;
using SimpleInjector;
namespace DependencyInjection
{
class Program
{
private static Container _container;
static void Main(string[] args)
{
Bootstrap();
_container.GetInstance<Greeter>().Greet();
}
private static void Bootstrap()
{
_container = new Container();
_container.Register<ILogger>(() => LogManager.GetCurrentClassLogger(), Lifestyle.Transient);
_container.Register<Greeter>();
_container.Verify();
}
public class Greeter
{
private ILogger _logger;
public Greeter(ILogger logger)
{
_logger = logger;
}
public void Greet()
{
_logger.Log(LogLevel.Info, "Hello world!");
}
}
}
}