code: def _collect_logger_metadata(self, trainer: "pl.Trainer") -> None:
      if not trainer.loggers:
          return
  
      for logger in trainer.loggers:
          metadata = {"class_name": logger.__class__.__name__}
          if isinstance(logger, WandbLogger) and not logger._offline:
              metadata.update(
                  {
                      "username": logger.experiment.entity,
                      "project_name": logger.name,
                      "run_id": logger.version,
                  }
              )
  
          if metadata and metadata not in self.work.logger_metadatas:
              self.work.logger_metadatas.append(metadata)
  
imports: import inspect
  from typing import TYPE_CHECKING, Any, Dict, Union
  import lightning.pytorch
  from lightning.app.storage.path import Path
  from lightning.app.utilities.app_helpers import Logger
  from lightning.pytorch import Callback
  from lightning.pytorch.callbacks.progress.progress_bar import get_standard_metrics
  from lightning.pytorch.loggers import TensorBoardLogger, WandbLogger
  from lightning.pytorch.utilities.parsing import collect_init_args
  from core.state import ProgressBarState, TrainerState
label_desc: Use image node_id 4 for calling the PLAppArtifactsTracker obj's underlying member method code with example usage: obj._collect_logger_metadata(trainer) without return types