Steven,
We have code that does what you want.  It was written several years ago
by someone who claimed to understand log4Net.  I don't know if this is
the only way, the right way or just a way that happens to work.

We have our own LogManager class that has 4 static methods
                public static MyLogger GetLogger
(System.Reflection.Assembly assembly, string name)
                {
                        return
WrapLogger(log4net.Core.LoggerManager.GetLogger(assembly, name));
                }
                public static MyLogger GetLogger (Type logging_type)
                {
                        return
GetLogger(System.Reflection.Assembly.GetCallingAssembly(),
logging_type.FullName);
                }               

                public static MyLogger WrapLogger (log4net.Core.ILogger
logger)
                {
                        return (MyLogger)my_wrappers.GetWrapper(logger);
                }               

                private static log4net.Core.ILoggerWrapper
WrapperCreation (log4net.Core.ILogger logger)
                {
                        return new MyLogger(logger);
                }               

and this
                private static readonly log4net.Core.WrapperMap
my_wrappers =
                                new log4net.Core.WrapperMap(new
log4net.Core.WrapperCreationHandler(WrapperCreation));

MyLogger is a class that derives from log4net.Core.LogImpl

Instead of calling log4net.LogManager.GetLogger("myloggername") we call
our own LogManager class.  You would need to add the GetLogger to match
your prototype of just a string name.

I will freely admit that I don't understand the whole wrapper part.

HTH

------------------------------------------------------------------------
----------
Roy Chastain



-----Original Message-----
From: steven higgan [mailto:steven.hig...@gmail.com] 
Sent: Wednesday, March 11, 2009 22:35
To: Log4NET Dev
Subject: use my own ILog implementation

What I want to do (and I am completely unsure about how to do it) is
that when I call :
static log4net.ILog log = log4net.LogManager.GetLogger("myloggername");

I want the instance of ILog that I get back to be my own implementation
of ILog

So how do I go about telling that how to create my instance ? can we
provide a factory or even a func?

thanks.

Reply via email to