저는 .NET MVC4 프로젝트를 가지고 있으며, 로거와 함께 NLOG를 포장하고 Castle Windsor가 주입하려고합니다. 나는 다음과 같은 것을 시도한다. 나는 성공적으로 그것을 다룰 수있는 기회가 없었다. 캐슬 윈저에 NLOG 배치하기
container.Register(Component.For<ICommonLogger>().ImplementedBy(typeof(CommonLogger)).LifeStyle.Transient);
container.Kernel.Resolver.AddSubResolver(new LoggerResolver(container.Kernel));
public class LoggerResolver : ISubDependencyResolver
{
private readonly IKernel kernel;
public LoggerResolver(IKernel kernel)
{
this.kernel = kernel;
}
public bool CanResolve(CreationContext context,
ISubDependencyResolver contextHandlerResolver,
ComponentModel model,
DependencyModel dependency)
{
return dependency.TargetType == typeof(ICommonLogger);
}
public object Resolve(CreationContext context,
ISubDependencyResolver contextHandlerResolver,
ComponentModel model,
DependencyModel dependency)
{
if (CanResolve(context, contextHandlerResolver, model, dependency))
{
return kernel.Resolve<ICommonLogger>(new { loggerType = model.Implementation });
}
return null;
}
}
하지만 이미지 오류를 얻고있다
public interface ICommonLogger
{
void Info(string message);
}
public class CommonLogger : ICommonLogger
{
private readonly Logger _logger;
public CommonLogger(Type loggerType)
{
_logger = LogManager.GetLogger(loggerType.FullName, loggerType);
}
public void Info(string message)
{
_logger.Info(message);
}
}
.
나는
그것은 성하는 ILogger 구현과 작동container.AddFacility<LoggingFacility>(f => f.UseNLog());
직접 NLOG를 사용하지만 나는 그것이 자신의 ICommonLogger의 implemantation 위해 일합니다.
내가 뭘 잘못하고 있니?
대단히 감사합니다. –