Log4netで素晴らしいログ抽象化を試みるために、this SO postとアダプタをthis SO postから抽象化し、それらを連携させようとしました。Log4netを使った単純なインジェクタと抽象抽象
本当に残っていたのは、コンテナを構成することでした。これは、私が成功しなかった部分です。私が試してみました
設定を使用すると、コードから見ることができるように、私はそれが注入されたクラスからその型をとり、特定のlog4netのロガーを希望
public static class InfrastructureRegistry
{
public static void RegisterLoggingServices(this Container container)
{
container.RegisterConditional(typeof(ILog), c => LogManager.GetLogger(
c.Consumer.ImplementationType).GetType(),
Lifestyle.Scoped, c => true);
container.RegisterPerWebRequest<ILogger, Log4netAdapter>();
}
}
です。ほとんどのロギングはキャッチオールで行われますが、いくつかのロギングは下位層で行われることが望まれます。フォームの検証に失敗したとき
私はその構成で取得ActivationException
は次のとおりです。
タイプLogImplのコンストラクタは、名前 「ロガー」と登録されていないタイプのILoggerですとパラメータが含まれています。 ILoggerが登録されていることを確認するか、LogImplのコンストラクタを変更してください。
ここからどこに行くのかはわかりません。だから、どんな助けにも感謝します。
編集
申し訳ありませんが、私はそのような私は一度だけ、この設定を記述する必要があること記述しようとしていますことを指摘しなければなりません。以下のファクトリ関数は動作しますが、私は手動で私はロガーを注入するたびに多くの設定を追加する必要がありますする必要はありません:
container.RegisterPerWebRequest<ILog>(() => LogManager.GetLogger(typeof(LoginController)));
おかげでスティーブンのヒープ。私は自分自身に迷惑をかける。あなたの答えはとても分かりやすいように見えますが、どうして私がそれを思い付かなかったのか分かりません。私は年を過ごしました。再度、感謝します! – onefootswill