Şu anda AOP performans günlüğü yapmak için PostSharp kullanıyorum ve ProfilerAspects üzerinde bazı toplu varyasyonlar yapmak istiyorum.Arama yığını yığılmış günlük kaydı yapmak için PostSharp'u nasıl kullanırım?
İlgilendiğim bir varyasyon, günlüğe kaydetme işleminin bu özellik ile adlandırılan ilk işlev tarafından birleştirilmesidir. Ben EntryAggregatedProfiler adlı bir yönü olmasını isterdim ve iki yöntem A ve B aşağıdaki gibi: Umarım bu örnek açıkça yapmalıdır Bir giriş oluşturmak için benim profilci yönünü istiyorum
[EntryAggregatedProfiler]
public int A(int depth)
{
Thread.sleep(100); // sleep 100 milliseconds
if (depth > 0) return depth;
return A(depth + 1);
}
[EntryAggregatedProfiler]
public int B()
{
Thread.sleep(50);
return A(0);
}
zaman A (0) denir. A (0) için günlük giriş aşağıdaki biçimde olmalıdır:
<function name="A">
<args>
<depth type="int">0</depth>
</args>
<function name="A">
<args>
<depth type="int">1</depth>
</args>
<callTime>105</callTime>
</function>
<callTime>210</callTime>
</function>
Ve B'ye bir çağrı() İkincisi
<function name="B">
<args />
<function name="A">
<args>
<depth type="int">0</depth>
</args>
<function name="A">
<args>
<depth type="int">1</depth>
</args>
<callTime>105</callTime>
</function>
<callTime>210</callTime>
</function>
<callTime>265</callTime>
</function>
gibi bir günlük girişi oluşturmalısınız, ben de istiyorum Bu sınıf düzeyinde yarattık, bu nedenle yukarıdaki gibi ama a ve B her ikisi ile bir sınıf içinde yöntemlerle aynı tasarım deseni:
[ClassEntryAggregatedLogger]
public class C
{
public int A(int depth)
{
.......etc......
}
Yani CA çağrısı (0) ve CB() benzer üretmelidir Yukarıdaki sonuçlar.