class_docstr: Stores artifacts as files in a local directory.
code: def log_artifact(self, local_file, artifact_path=None):
      verify_artifact_path(artifact_path)
      # NOTE: The artifact_path is expected to be in posix format.
      # Posix paths work fine on windows but just in case we normalize it here.
      if artifact_path:
          artifact_path = os.path.normpath(artifact_path)
  
      artifact_dir = (
          os.path.join(self.artifact_dir, artifact_path)
          if artifact_path
          else self.artifact_dir
      )
      if not os.path.exists(artifact_dir):
          mkdir(artifact_dir)
      try:
          shutil.copy2(
              local_file,
              os.path.join(artifact_dir, os.path.basename(local_file)),
          )
      except shutil.SameFileError:
          pass
  
file_path: mlflow/mlflow/store/artifact/local_artifact_repo.py
imports: import os
  import shutil
  from mlflow.store.artifact.artifact_repo import ArtifactRepository, verify_artifact_path
  from mlflow.utils.file_utils import get_file_info, list_all, local_file_uri_to_path, mkdir, relative_path_to_artifact_path
label_desc: Use image node_id 3 for calling the LocalArtifactRepository obj's underlying member method code with example usage: obj.log_artifact(local_file, artifact_path) without return types