docstr: Returns a table with experiment logs consisting
  run details, parameter, metrics and tags.
  
  Example
  -------
  >>> logs = get_logs()
  
  This will return pandas dataframe.
  
  Parameters
  ----------
  experiment_name : str, default = None
      When set to None current active run is used.
  
  save : bool, default = False
      When set to True, csv file is saved in current directory.
  
  Returns
  -------
  pandas.DataFrame
docstr_tok: ["Returns","a","table","with","experiment","logs","consisting","run","details",",","parameter",",","metrics","and","tags",".","Example","--","--","--","-",">",">",">","logs","=","get_logs","(",")","This","will","return","pandas","dataframe",".","Parameters","--","--","--","--","--","experiment_name",":","str",",","default","=","None","When","set","to","None","current","active","run","is","used",".","save",":","bool",",","default","=","False","When","set","to","True",",","csv","file","is","saved","in","current","directory",".","Returns","--","--","--","-","pandas.DataFrame"]
code: def get_logs(
      self, experiment_name: Optional[str] = None, save: bool = False
  ) -> pd.DataFrame:
      """
      Returns a table with experiment logs consisting
      run details, parameter, metrics and tags.
  
      Example
      -------
      >>> logs = get_logs()
  
      This will return pandas dataframe.
  
      Parameters
      ----------
      experiment_name : str, default = None
          When set to None current active run is used.
  
      save : bool, default = False
          When set to True, csv file is saved in current directory.
  
      Returns
      -------
      pandas.DataFrame
  
      """
  
      import mlflow
      from mlflow.tracking import MlflowClient
  
      client = MlflowClient()
  
      if experiment_name is None:
          exp_id = self.exp_id
          experiment = client.get_experiment(exp_id)
          if experiment is None:
              raise ValueError(
                  "No active run found. Check logging parameter in setup "
                  "or to get logs for inactive run pass experiment_name."
              )
  
          exp_name_log_ = experiment.name
      else:
          exp_name_log_ = experiment_name
          experiment = client.get_experiment_by_name(exp_name_log_)
          if experiment is None:
              raise ValueError(
                  "No active run found. Check logging parameter in setup "
                  "or to get logs for inactive run pass experiment_name."
              )
  
          exp_id = client.get_experiment_by_name(
              exp_name_log_
          ).experiment_id
  
      runs = mlflow.search_runs(exp_id)
  
      if save:
          file_name = f"{exp_name_log_}_logs.csv"
          runs.to_csv(file_name, index=False)
  
      return runs
  
imports: import inspect
  import os
  import warnings
  from collections import defaultdict
  from typing import Any, BinaryIO, Callable, Dict, Optional, Union
  import cloudpickle
  import pandas
  import pycaret.internal.patches.sklearn
  import pycaret.internal.patches.yellowbrick
  import pycaret.internal.persistence
  from pycaret.internal.logging import get_logger
  from pycaret.utils.constants import DATAFRAME_LIKE
  from pycaret.utils.generic import LazyExperimentMapping
label_desc: Use image node_id 16 for calling the _PyCaretExperiment obj's underlying member method code with example usage: obj.get_logs(experiment_name, save) and returns: runs