public void Log()

in nuget-extensions/nuget-plugin/Logging/LoggerBase.cs [20:58]


    public void Log(LogLevel level, string message)
    {
      if (!_allowLogWrites)
      {
        // cheap reserve, if it swaps out after we add, meh, we miss one log
        var buffer = _bufferedLogs;
        if (buffer != null)
        {
          buffer.Enqueue(Tuple.Create(level, message));
        }

        // we could pass this through if buffer is null since the Set message has already come through to unblock us, but
        // the race should be rare and we don't know exactly how nuget will behave with the parallelism so
        // opt to ignore this one racing log message.
        return;
      }

      if (_bufferedLogs != null)
      {
        ConcurrentQueue<Tuple<LogLevel, string>> buffer = null;
        buffer = Interlocked.CompareExchange(ref _bufferedLogs, null, _bufferedLogs);

        if (buffer != null)
        {
          foreach (var log in buffer)
          {
            if (log.Item1 >= _minLogLevel)
            {
              WriteLog(log.Item1, log.Item2);
            }
          }
        }
      }

      if (level >= _minLogLevel)
      {
        WriteLog(level, message);
      }
    }