をコンソールにメッセージを複製:コンソールで注入log4netのログ、次のように私はlog4netのを注入してい
DI
container.RegisterSingleton<Func<object, ILog>>(instance => {
return LogManager.GetLogger(instance.GetType());
});
使用
public class MyClass {
private readonly ILog _logger;
public MyClass(Func<object, ILog> loggerFactory) {
_logger = loggerFactory(this);
}
}
、私は予測可能な複製を取得メッセージ。メッセージプリントの第一セット一回、第二の二倍を設定し、第六それも私ドン以来コンソールにログインしている理由、私はわからないなど、6回、...正直
4470 [6] INFO JobManager - Getting pending jobs...
5953 [5] DEBUG JobManager - #113: 1/14 (7.14 %)
6489 [6] INFO JobManager - Getting pending jobs...
6489 [6] INFO JobManager - Getting pending jobs...
7679 [8] DEBUG JobManager - #113: 2/14 (14.29 %)
7679 [8] DEBUG JobManager - #113: 2/14 (14.29 %)
8512 [6] INFO JobManager - Getting pending jobs...
8512 [6] INFO JobManager - Getting pending jobs...
8512 [6] INFO JobManager - Getting pending jobs...
9551 [29] DEBUG JobManager - #113: 3/14 (21.43 %)
9551 [29] DEBUG JobManager - #113: 3/14 (21.43 %)
9551 [29] DEBUG JobManager - #113: 3/14 (21.43 %)
を設定しましたそのアペンダーが設定されているか、有効になっていて、設定ファイルのXmlConfigurator.Configure()
とlog4net関連のものをコメントアウトしてもそれはありません。私が使用している唯一のアペンダーはジブラルタルです。私はこれをVSから実行しており、デバッグではなく、デバッグとリリースの両方の設定を同じ結果で試しています。ファイルアペンダーを追加しました。結果のログファイルに行が重複しません。
<logger name="myloggername" additivity="false">
リクエストごとにシングルトンを生成しないことを証明するために、 'LogManager.GetLogger()'を返すようにブレークポイントを設定できますか?ちょっと考えました... – Waescher
なぜILOGではなくFuncを注入していますか?気になります。 – CodingYoshi
@コーディングヨシ各タイプに独自のロガーを付けることができます。あなたの質問を誤解しない限り...? –