I'm looking for a way to get all appenders attached to one logger instance.
I tried:
Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
hierarchy.GetAppenders()
as per documentation this returns all appenders for all loggers currently configured.
When I try this:
LogManager.GetLogger("MyLoggerName").Logger.Repository.GetAppenders();
I get the same result.
I would like to retrieve only appenders attached to one logger ("MyLoggerName" in this case)
Where am I wrong?
When you call the following code
LogManager.GetLogger("MyLoggerName").Logger.Repository.GetAppenders();
you are in fact asking the exact same data as hierarchy.GetAppenders()
because Hierarchy
inherits LoggerRepositorySkeleton
, which implements ILoggerRepository
, the type returned by Logger.Repository
.
You can however get the list of "first level" appenders by using the Logger
class that lives in the Hierarchy
namespace:
var h = LogManager.GetRepository() as Hierarchy;
var l = h.GetLogger("MyLoggerName", h.LoggerFactory);
// do something with the l.Appenders property
You will have to handle special cases like bufefring or filtering appenders from there
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With