所以我正在使用NLog和Postsharp组合一个项目。我有一个OnMethodBoundaryAspect属性后代来装饰类并提供截获的执行记录。我的DI容器是Unity。
那么,单独使用DI(而非ServiceLocator),如何解析方面类中的Log对象以提供日志记录?在过去,我使用ServiceLocator来解析日志对象,但我正试图摆脱它,因为我真的开始相信ServiceLocator真的是一个反模式(是的我知道有一点神圣关于这个问题的战争)。
谢谢!
答案 0 :(得分:1)
在类Aspect
中添加静态属性记录器public class LogAspect : OnMethodBoundaryAspect
{
/// <summary>
/// Gets or sets the logger.
/// </summary>
public static ILogger logger { get; set; }
使用ILogger类在应用程序init方法中设置logger变量,并在使用AttributeExclude进行初始化之前排除所有方法。
[LogAspect(AttributeExclude = true)]
protected void Application_Start()
{
_windsorContainer = new WindsorContainer();
ApplicationDependencyInstaller.RegisterLoggingFacility(_windsorContainer);
LogAspect.logger = _windsorContainer.Resolve<ILogger>();