{"record":{"id":"68345a5774ff7d02","repo":"Lightning-AI/pytorch-lightning","slug":"the-csvlogger-does-not-yet-support-logging-hyper","errorCode":null,"errorMessage":"The `CSVLogger` does not yet support logging hyperparameters.","messagePattern":"The `CSVLogger` does not yet support logging hyperparameters\\.","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"warning","filePath":"src/lightning/fabric/loggers/csv_logs.py","lineNumber":142,"sourceCode":"    def experiment(self) -> \"_ExperimentWriter\":\n        \"\"\"Actual ExperimentWriter object. To use ExperimentWriter features anywhere in your code, do the following.\n\n        Example::\n\n            self.logger.experiment.some_experiment_writer_function()\n\n        \"\"\"\n        if self._experiment is not None:\n            return self._experiment\n\n        os.makedirs(self._root_dir, exist_ok=True)\n        self._experiment = _ExperimentWriter(log_dir=self.log_dir)\n        return self._experiment\n\n    @override\n    @rank_zero_only\n    def log_hyperparams(self, params: Union[dict[str, Any], Namespace]) -> None:\n        raise NotImplementedError(\"The `CSVLogger` does not yet support logging hyperparameters.\")\n\n    @override\n    @rank_zero_only\n    def log_metrics(  # type: ignore[override]\n        self, metrics: dict[str, Union[Tensor, float]], step: Optional[int] = None\n    ) -> None:\n        metrics = _add_prefix(metrics, self._prefix, self.LOGGER_JOIN_CHAR)\n        if step is None:\n            step = len(self.experiment.metrics)\n        self.experiment.log_metrics(metrics, step)\n        if (step + 1) % self._flush_logs_every_n_steps == 0:\n            self.save()\n\n    @override\n    @rank_zero_only\n    def save(self) -> None:\n        super().save()\n        self.experiment.save()","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/Lightning-AI/pytorch-lightning/blob/9fed5c27d2a62ff0efd6c3573599921d6ff67c14/src/lightning/fabric/loggers/csv_logs.py#L124-L160","documentation":"The Fabric `CSVLogger` explicitly does not implement `log_hyperparams`; calling it raises `NotImplementedError`. The CSV writer only records metrics rows, so hyperparameter logging is unsupported by design.","triggerScenarios":"Calling `logger.log_hyperparams(params)` on a `lightning.fabric.loggers.csv_logs.CSVLogger`, or having generic logging code / a callback that logs hyperparameters for every configured logger.","commonSituations":"Sharing a logging utility between TensorBoard and CSV loggers; saving hyperparameters from a config dict via the logger; frameworks that probe all loggers with log_hyperparams.","solutions":["Save hyperparameters yourself, e.g. write the config to JSON/YAML next to the CSV metrics file","Switch to a logger that supports hyperparameters (TensorBoardLogger, MLFlowLogger, WandbLogger)","Guard the call: check `not isinstance(logger, CSVLogger)` or catch NotImplementedError"],"exampleFix":"# before\nlogger.log_hyperparams(config)  # CSVLogger -> NotImplementedError\n\n# after\nimport json, os\nwith open(os.path.join(logger.log_dir, 'hparams.json'), 'w') as f:\n    json.dump(config, f, default=str)","handlingStrategy":"try-catch","validationCode":"from lightning.fabric.loggers.csv_logs import CSVLogger\nif not isinstance(logger, CSVLogger):\n    logger.log_hyperparams(params)","typeGuard":"from lightning.fabric.loggers.csv_logs import CSVLogger\ndef supports_hparams(logger) -> bool:\n    return not isinstance(logger, CSVLogger)","tryCatchPattern":"try:\n    logger.log_hyperparams(params)\nexcept NotImplementedError:\n    pass  # CSVLogger does not support hparams; persist separately","preventionTips":["Persist hyperparameters to a JSON/YAML file yourself","Use try/except NotImplementedError in generic logging utilities"],"tags":["pytorch-lightning","fabric","csv-logger","hyperparameters","not-implemented"],"backgroundTag":"unsupported-feature-invocation","analyzedSha":"9fed5c27d2a62ff0efd6c3573599921d6ff67c14","analyzedAt":"2026-08-28T11:52:41.083Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}