You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by Arne Claassen <ar...@claassen.net> on 2009/04/29 08:25:12 UTC

Memory leak due to LogImpl?

I'm debugging some memory leaks in a daemon process of mine and came 
across an issue with subclassing from LogImpl. Not sure if i'm doing 
something i shouldn't or if there is a better way, but basically LogImpl 
subscribes to event and never unsubscribes, making the repository hold 
on to my logging objects forever.

The problem seems to be this:

        public LogImpl(ILogger logger) : base(logger)
        {
            // Listen for changes to the repository
            logger.Repository.ConfigurationChanged += new 
LoggerRepositoryConfigurationChangedEventHandler(LoggerRepositoryConfigurationChanged);

            // load the current levels
            ReloadLevels(logger.Repository);
        }

There is no matching -= for logger.Repository.ConfigurationChanged and 
since LoggerRepositoryConfigurationChanged is private no way i can do it 
by hand.

The reason i created a logger based on LogImpl is that i wanted to 
create a logger that always prepends some context specific data to every 
log message. Is there a better way to do this without creating my 
subclass or if subclassing is the right way to go, is there something 
else i should be doing to not get this perpetual reference?

thanks
Arne Claassen