Serilogロギング機能でパラメータの特定のテンプレートの使用を強制するコントラクトを作成したいと思います。Serilogで特定のパラメータを使用して強制する(または一般的には外部関数で)
私の独自の機能をカプセル化せずにこれを行う方法はありますか(各ログレベルで行う必要があります)?
私はEventLogと呼ばれる名前空間を持っています。この名前空間には、イベントタイプ、施設などがあります。 ロギング時にその名前空間のイベントタイプと機能を使用するように強制したいと思います。
むしろより:
void _LogLevel_<T0, T1, T2>(string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2);
私はこれを強制したい2つのパラメータが指定されていない場合はコンパイルされないでしょうコードを仮定
void _LogLevel_<EventLog.EventItem, EventLog.Facility, T0, T1>(string messageTemplate, EventLog.EventItem EventType, EventLog.Facility Facility, T0 propertyValue0, T1 propertyValue1, ...);
、そして最初にその2つのオブジェクトは、汎用のT0, T1, ...
がSerilogに存在するため、シリアル化されます。
これは、ロギング機能が呼び出されると、指定されたパラメータが常に追加されることを保証するためです。
この問題の別の問題は、Serilogには独自のDSLがあり、文字列であるmessageTemplate
に{@Event}, {@Facility}
を追加することはできません。
を? (私はあなたが関数に渡したブール値のパラメータであると仮定しています)。それを強制的にする方法はありますか?ありがとう! –
はい、それが目的です。 –