問題タブ [ninject-logging]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ILogger の構成は不要ですか?
私は Ninject のログ拡張機能 (v3.0) を NLog (v2.0) で試しています。私が読んだことから、何も設定する必要はありません。これは自動魔法のようなもので、必要なのはdo は、ILogger
必要な場所で依存関係を宣言することです。
nlog.config
既に持っていたファイルを保持し、ロガーを作成するすべてのコードを削除し、代わりにILogger
クラスのコンストラクターに入れました。
ActivationException
コンポジション ルートで ...Ninject can't resolve が表示されますILogger
。
私は何が欠けていますか?
私が持っているものは、本質的にこれに要約されます:
これは価値のあるコンソール アプリです...ロギング拡張機能はこのように動作するはずですか?
ドキュメントには次のように記載されています。
タイプインスタンスをリクエストする前に、カーネルが新しい Log4NetModule または NLogModule をロードしていることを確認してください
しかし、私がこれを行うと:
...ReSharper は何が何であるかを知りませんNLogModule
。
c# - リリース ビルドのみで ILoggerFactory.GetCurrentClassLogger が InvalidOperationException で失敗する
先週、私の Windows サービス アプリケーションの運用環境へのデプロイが失敗したため、プロジェクトをローカルでリリース モードで実行しようとしたところInvalidOperationException: Can not determine current class.
、GetCurrentClassLogger
.
私のプロジェクトでは、 NinjectILoggerFactory
を使用して、中間層のすべてのサービスに解決します。次に、サービスはコンストラクターでGetCurrentClassLogger()
適切なものを取得するために使用します。ILogger
例えば:
Ninject.Extensions.LoggingGetCurrentClassLogger
のatLoggerFactoryBase
の実装を掘り下げると:
例外がスローされている場所を確認できます。
私の最初の本能は、システム、フレームワーク、またはプロジェクトの更新が原因であるかどうかを確認することでしたが、最後に成功した展開以降、意味のあることは何も行われませんでした.
さて...この問題の「面白い」ことはTrace.WriteLine("Test");
、コンストラクターに行を追加すると、正常にGetCurrentClassLogger
実行されることです。
この問題をコンパイラのコード最適化に関連付けることができました。プロジェクト プロパティの [ビルド] タブで無効にすると、正常に実行されます。
質問StackFrame
:の提供を停止する原因は何DeclaringType
ですか?
その間、私はこれを回避策として使用していますが、元の方法を使用することをお勧めします。
どんな助けでも大歓迎です。