title: How to change ILoggerFacade implementation to trace caller method using CallerMemberName attribute?
body: <p>I'm trying to implement logging functionality into my new WPF 4.5 CompositeWPF (Prism) project.
  This requires me to implement ILoggerFacade in my code. The interface only implements 1 method: <code>Log(string message, Category category, Priority priority)</code>.</p>
  
  <p>The <code>ILoggerFacade</code> interface:</p>
  
  <pre><code>public interface ILoggerFacade
  {
      void Log(string message, Category category, Priority priority);
  }
  </code></pre>
  
  <p>My implementation :</p>
  
  <pre><code>public class Log4NetLogger : ILoggerFacade
  {
      private static readonly ILog m_Logger = LogManager.GetLogger(typeof(ILoggerFacade));
  
      public void Log(string message, Category category, Priority priority)
      {
          switch (category)
          {
              case Category.Debug:
                  m_Logger.Debug(message);
                  break;
              case Category.Warn:
                  m_Logger.Warn(message);
                  break;
              case Category.Exception:
                  m_Logger.Error(message);
                  break;
              case Category.Info:
                  m_Logger.Info(message);
                  break;
          }
      }
  }
  </code></pre>
  
  <p>I believe that with newly introduced <code>[CallerMemberName]</code> attribute I should be able to get the caller method name passed to the logger if only I knew how to do something like this:</p>
  
  <pre><code>public class Log4NetLogger : ILoggerFacade
  {
      public void Log(string message, Category category, Priority priority, [CallerMemberName] string callerMethod = "")
      {
           ...
  </code></pre>
  
  <p>So my question, how do I override the <code>Log</code> method enforced by third party (Prism) interface to contain 1 additional, optional parameter? Or how do I pass the caller method name using this attribute so I can log it?</p>
  
  <p>I have seen other similar questions but [CallerMemberName] attribute is a new feature in .NET 4.5 so I'm hoping for a better solution than the ones presented.</p>