#33987 [Bug]: Completed all-error batch crashes logging when output_file_id is null
## What happened
A batch where every request line fails can legitimately return:
```json { "status": "completed", "output_file_id": null, "error_file_id": "file-..." } ```
LiteLLM's batch success logging then repeatedly crashes with:
```text ValueError: Output file id is None cannot retrieve file content ```
The error occurs inside the logging worker on every `aretrieve_batch` poll, producing repeated error logs and skipping the completed batch's zero-cost accounting.
## Reproduction
1. Configure a managed batch model and proxy logging. 2. Upload a valid JSONL batch input where every request line is provider-invalid. 3. Create the batch and wait for terminal state. 4. Retrieve the batch repeatedly.
For OpenAI and Azure, successful lines are written to `output_file_id` and failed lines are written to a separate `error_file_id`. An all-error batch therefore has no output file.
## Root cause
`litellm/batches/batch_utils.py::_handle_completed_batch` unconditionally invokes `_get_batch_output_file_content_as_dictionary(...)`, which raises when `batch.output_file_id is None`. The call comes from `async_success_handler` / LoggingWorker for `aretrieve_batch`, so the same ex…