# termlog output from Lightning callback not shown in W&B Logs tab

**URL:** <https://community.wandb.ai/t/termlog-output-from-lightning-callback-not-shown-in-w-b-logs-tab/18114>\
**Category:** W&B Help\
**Tags:** wandb\
**Created:** [September 17, 2025, 12:28pm UTC](https://community.wandb.ai/t/termlog-output-from-lightning-callback-not-shown-in-w-b-logs-tab/18114 "2025-09-17T12:28:47Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![omarshkokani](https://avatars.discourse-cdn.com/v4/letter/o/b4bc9f/32.png) [@omarshkokani](https://community.wandb.ai/u/omarshkokani)\
**Post date:** [September 17, 2025, 12:28pm UTC](https://community.wandb.ai/t/termlog-output-from-lightning-callback-not-shown-in-w-b-logs-tab/18114/1 "2025-09-17T12:28:47Z")

</div>

I am using Weights & Biases with PyTorch Lightning and want to log progress messages to the **Logs tab** using `wandb.termlog()` inside a Trainer callback.

However, the messages only appear in the **local Python terminal** , and they do not show up in the W&B **Logs tab** on the server.

Here is a minimal example of my callback:

```python
import wandb
from pytorch_lightning.callbacks import Callback

class WandbProgressLogger(Callback):
    def __init__ (self, log_every_n_steps=1):
        self.log_every_n_steps = log_every_n_steps

    def _log_progress(self, trainer, batch_idx, stage: str):
        if not getattr(trainer, "is_global_zero", True):
            return
        if (trainer.global_step + 1) % self.log_every_n_steps != 0 and stage == "train":
            return
        try:
            if stage == "predict":
                num_batches = len(trainer.predict_dataloaders)
            else:
                dataloader = getattr(trainer, f"{stage}_dataloader")
                num_batches = len(dataloader)
            progress_percent = (batch_idx + 1) / num_batches * 100 if num_batches > 0 else 0.0
        except Exception:
            progress_percent = 0.0

        metrics = {
            f"progress/{stage}": progress_percent,
            "progress/epoch": float(trainer.current_epoch),
        }
        if trainer.logger is not None:
            trainer.logger.log_metrics(metrics, step=trainer.global_step)

        wandb.termlog(f"[step {batch_idx}] {stage} progress: {progress_percent:.2f}%\n")

    def on_train_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx=0):
        self._log_progress(trainer, batch_idx, "train")

    def on_predict_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx=0):
        self._log_progress(trainer, batch_idx, "predict")

```

**Environment / Additional Info:**

- PyTorch Lightning `ddp` / multi-GPU
- W&B Python SDK latest version
- Using `wandb.termlog` inside DDP callback
- Expected: Messages appear in W&B Logs tab
- Actual: Messages only appear in local Python console

Could you advise how to make `termlog` messages from Lightning callbacks appear in the **W&B Logs tab** when using DDP?
