プロジェクトでロギングなどを行う方法として Postsharp を使い始めたばかりで、まだ解決していない問題に遭遇しました。
私のプロジェクトでは、LogAttribute を作成しました。これは、実行しようとしている情報を正しくログに記録しています。たとえば、パラメータの出入り方法などです。唯一の問題は、すべてのコンストラクターに対してもこれを行っていることです。これはログに記録したくないのです。
コンストラクターがログアウトされないようにする方法はありますか?
私の GlobalAspects.cs は次のようになります。
using PostSharp.Patterns.Diagnostics;
using PostSharp.Extensibility;
[assembly: TraceAttribute(AttributeTargetTypes = "myNamespace.toLog.*", AttributeTargetTypeAttributes = MulticastAttributes.Public, AttributeTargetMemberAttributes = MulticastAttributes.Public)]
私の属性の OnEntry、OnSuccess、および On Exception メソッドはすべて、次のバリアントです。
StringBuilder output = new StringBuilder();
output.Append("Entering: ");
output.Append(this.methodName);
for (int i = 0; i < args.Arguments.Count; i++)
{
output.Append(" Argument: " + i + " - ");
output.Append(args.Arguments.GetArgument(i) ?? "null");
}
m_logger.Trace(output);