title: ILogger (ASP.NET Core) Log is called even IsEnabled return false
body: <p>I am trying to understand the purpose of <a href="https://docs.microsoft.com/en-us/aspnet/core/api/microsoft.extensions.logging.ilogger#Microsoft_Extensions_Logging_ILogger_IsEnabled_Microsoft_Extensions_Logging_LogLevel_" rel="noreferrer">IsEnabled</a> method in ILogger interface.
  I would expect that method is automatically called every time something can be log, but method Log is called no mater what returned IsEnabled.</p>
  
  <p>Should I check IsEnabled inside Log method?</p>
  
  <pre><code>    public bool IsEnabled(LogLevel logLevel)
      {
          return logLevel &gt;= this.level;
      }
  
      public void Log&lt;TState&gt;(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func&lt;TState, Exception, string&gt; formatter)
      {
          if (this.IsEnabled(logLevel))   //it seams that this is required ????
          {
              string s = formatter(state, exception);
              string formatted = s.Replace("\r\n", "\r\n                          ");
              Console.WriteLine(string.Format("{0,-15} {1,-5} - {2}", logLevel, eventId, formatted));
          }
      }
  </code></pre>
  
  <p>Then what is the purpose and who(why) calls IsEnabled.</p>