Ich habe ein Programm, das viele log4net-Aufrufe an die "myprogram"-Logger macht. Es ruft auch anderen Code auf, der log4net-Aufrufe an andere Logger macht. Ich möchte alle Logs höher als INFO für "myprogram" erfassen und alle Logs höher als WARN für alles andere. Auf diese Weise erhalte ich die Arbeitsnachrichten, die spezifisch für die Aufgabe sind, an der ich arbeite, werde aber immer noch über potenziell schlechte Dinge benachrichtigt, die im unterstützenden Code passieren. Ich möchte, dass dies sowohl an die Konsole als auch an eine Protokolldatei gesendet wird.
Ich habe die folgende log4net-Konfiguration:
Dies macht für mich perfect Sinn: log >WARN für alles und >INFO für den spezifischen "myprogram" Logger.
Das Problem ist, dass ich INFO-Nachrichten sowohl auf der Konsole als auch in der Protokolldatei zweimal protokolliert bekomme. Dies tritt nur auf, wenn sowohl die als auch die Elemente ausgefüllt sind; wenn ich eines davon entferne, funktioniert das verbleibende wie erwartet.
Ich könnte verstehen, wenn ich doppelt geloggte WARN-Einträge erhalten würde (da myprogram sowohl "root" als auch "myprogram" entspricht), aber es geschieht bei INFO, obwohl ROOT (vermutlich) auf WARN eingestellt ist.
Mache ich hier etwas falsch, oder handelt es sich um einen log4net-Bug/Unklarheit?