如何使用依赖项注入从postsharp方面解决日志依赖性

时间:2012-03-08 02:35:55

标签: dependency-injection unity-container nlog postsharp

所以我正在使用NLog和Postsharp组合一个项目。我有一个OnMethodBoundaryAspect属性后代来装饰类并提供截获的执行记录。我的DI容器是Unity。

那么,单独使用DI(而非ServiceLocator),如何解析方面类中的Log对象以提供日志记录?在过去,我使用ServiceLocator来解析日志对象,但我正试图摆脱它,因为我真的开始相信ServiceLocator真的是一个反模式(是的我知道有一点神圣关于这个问题的战争)。

谢谢!

1 个答案:

答案 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>();