0

Nservicebus v5 の DefaultFactory LogManager を使用しています。これには満足していますが、web.config で無効にできることを望んでいました。

ヘルプ ドキュメントにあるように、web.config 設定を使用します。

<configSections>
    <section name="Logging" type="NServiceBus.Config.Logging, NServiceBus.Core" />
</configSections>
<Logging Threshold="Debug" />

しきい値を致命的なものに設定しないことをお勧めします。「None」または Disabled="true" を望んでいました

また、ディレクトリ パスを web.config に設定できますか?

更新: エラーを無視する必要があるのはなぜですか?

要するに、サーバーに対する書き込み権限が実際にはありません。

長い間、これは 100% 真実ではありません。私たちのシステムはマイクロサービスに向かっています。これの問題は、分散ロギングがトレース/視覚化の悪夢であることです. そのため、フロー トレース、例外、限定トレースを集中型システムに移行しました。

プログラミング エントリ ポイント (別名メッセージ ハンドラー、Web API エンドポイントなど) は、ほとんどの場合、各ハンドラーの try catch ログ スローにラップされます。これにより、すべてのプログラミング エラーがカバーされます。これは通常とそれほど違いはありません。必要なすべての素敵な赤く点滅するリアルタイム アラームの集中ログ ロケーション セット。

これにより、キューの欠落、アセンブリ バインドの不良、構成ファイルの誤り、IoC ワイヤリング (ハンドラー コードの外部) などのランタイム スタイルのものなど、構成タイプのエラーのみが残ります。エラークエストの集中ログと監視により、サービスが壊れていることを検出するのはかなり簡単です。壊れている場合は、ログをオンにして再起動し、問題のある問題を試して修正します. 保証された配信は、それが再び立ち上がると、他のすべてを処理します:D 150 MB のログ ファイルが 10 の異なるサーバーに分散する時代は終わりました。

DefaultFactory のシンプルさは素晴らしく、別の nuget パッケージと関連する構成は必要ありませんでした。

これは正しい方法ですか?多くの人はノーと主張するでしょう。もっとうまくできたでしょうか?はい、共通のロガー インターフェースを実装して NServiceBus に渡すことはできますが、まだ静かではなく、勝利は重要ではありません。

補足: 私たちがログに記録する方法について本当に素晴らしい点の 1 つは、バックオフィス ツールで、greylog で相関 ID を使用するのと同様に、各「注文」のフローを簡単に表示できることです。

4

1 に答える 1

1

これは可能性の高いシナリオとは見なされなかったため、ファースト クラスの API はありません。ただし、これは、一般的なログ ライブラリ (NLog、Log4net、CommonLogging) のいずれかから null ロガーを渡すことで実現できます。あなたのウェブサイトでこれらのいずれかを使用していると思います。

たとえば、NLog を取り上げます。

Install-Package NServiceBus.NLog

あなたのwebconfigの

<appSettings>
  <add key="disableLogging" value="true"/>
</appSettings>

次に、グローバルスタートアップで

    if (ConfigurationManager.AppSettings.Get("disableLogging") == "true")
    {
        LoggingConfiguration config = new LoggingConfiguration();
        LogManager.Configuration = config;
        NServiceBus.Logging.LogManager.Use<NLogFactory>();
    }

これは、ここに記載されているアプローチを活用していますhttp://docs.particular.net/nservicebus/logging-in-nservicebus#nlog

于 2015-03-05T08:18:05.730 に答える