2017-07-14 47 views
0

我遵循http://doc.postsharp.net/add-logging中提到的步驟。 Visual Studio版本是2017,安裝了PostSharp 5.0.28擴展。將控制檯後端的日誌方面添加到整個項目中時,會添加GlobalAspect.cs文件,但輸出不會顯示日誌跟蹤。但是當我將[Log]屬性應用於方法時,可以看到日誌跟蹤。爲什麼GlobalAspect中的定義不適用?未在彙編級應用PostSharp 5.0.23中的日誌方面

using PostSharp.Patterns.Diagnostics;  
namespace ConsoleApp1  
{  
    [Log(AttributeExclude = true)]  
    public class Program  
    {  
     static void Main(string[] args)  
     {     
      LoggingServices.DefaultBackend = new PostSharp.Patterns.Diagnostics.Backends.Console.ConsoleLoggingBackend(); 
     }    
     public static void f()  
     {  
     }  
    }  
} 

我在控制檯和dll的GlobalAspects.cs文件中有以下條目。雖然在DLL中,它的工作原理,它沒有的控制檯。

[assembly: Log(AttributeTargetTypeAttributes=MulticastAttributes.Public‌​, AttributeTargetMemberAttributes=MulticastAttributes.Public)] 

回答

0

不幸的是,GlobalAspect似乎對控制檯應用程序沒有影響。在一個類庫上,它確實工作。

0

在程序集級別上應用[Log]方面時,它會根據指定的規則傳播到程序集中的方法。

您可以設置屬性,如AttributeTargetTypeAttributes,AttributeTargetMemberAttributes來指定是否要定位公共,私有,實例,靜態方法等。您還可以指定命名空間,類型和成員名稱。

這些屬性的默認值可能與您想要的不符。您需要確保指定的屬性符合所需目標方法的特徵。

[Log(AttributeTargetTypeAttributes = MulticastAttributes.Public, AttributeTargetMemberAttributes = MulticastAttributes.AnyVisibility)] 

你可以找到這個文檔頁面的更多詳細信息:http://doc.postsharp.net/attribute-multicasting