.netlogginglog4net

How to log MethodName when wrapping Log4net?


I have wrapped Log4net in a static wrapper and want to log

loggingEvent.LocationInformation.MethodName
loggingEvent.LocationInformation.ClassName

However all I get is the name of my wrapper.

How can I log that info using a forwardingappender and a static wrapper class like

Logger.Debug("Logging to Debug");
Logger.Info("Logging to Info");
Logger.Warn("Logging to Warn");
Logger.Error(ex);
Logger.Fatal(ex);

Solution

  • Well the error was somewhere in my appender but for completeness ill include the answer to the best of my knowledge:

    the Facade you need should wrap ILogger and NOT ILog

     public static class Logger
     {
        private readonly static Type ThisDeclaringType = typeof(Logger);
        private static readonly ILogger defaultLogger;
    
        static Logger()
        {
          defaultLogger =
            LoggerManager.GetLogger(Assembly.GetCallingAssembly(),"MyDefaultLoggger");
    

    ...

        public static void Info(string message)
        {
            if (defaultLogger.IsEnabledFor(infoLevel))
            {
                defaultLogger.Log(typeof(Logger), infoLevel, message, null);
            }
        }