Jellyfin logs should never be allowed to grow until they compete with the database, cache, or operating system for the last free gigabytes. Prevent the failure by limiting both Jellyfin's own log verbosity and the container or host logging layer that may be collecting the same events again.
This is easiest to miss on a small home-server system disk because two independent log paths can grow at once: Jellyfin writes application logs, while Docker, journald, or another supervisor can retain stdout and stderr separately. Start by identifying which path is actually consuming space, then cap retention at that layer, verify cleanup under normal use, and keep a free-space alert so a future debug session cannot silently fill the disk.
Find Which Log Store Is Actually Growing
Measure before deleting anything. Compare the size of Jellyfin's configured log directory with the container runtime or service-manager log store, and note which one changes while you reproduce a normal library scan or playback session. If only one path grows, fix that path instead of applying multiple rotation changes at once.
Jellyfin's troubleshooting guide warns that debug logging can generate a very large amount of output and is intended for short troubleshooting windows, so the first prevention check is whether a custom logging.json has left verbose categories enabled. Review the debug logging guidance before changing retention values.
If Jellyfin's own log directory is stable but the host system disk continues to shrink, inspect the runtime logs next. That result means deleting Jellyfin log files will only treat the visible symptom while the second logging layer keeps growing.
Set a Retention Boundary at the Runtime Layer
For containers, choose a logging driver and rotation policy that has a defined maximum instead of relying on unlimited growth. Apply the setting to newly created containers and record the chosen maximum so a future compose-file rebuild does not remove the protection.
Docker documents that its default json-file logging can consume significant disk space when rotation is not configured, while the local driver rotates by default. Use that container log rotation behavior to decide whether to cap max-size/max-file or use the local driver.
After changing the runtime policy, recreate the Jellyfin container if required by your runtime and confirm the active container is actually using the new driver. A daemon-level setting that only applies to new containers is not a successful fix until the Jellyfin instance has inherited it.
Keep Jellyfin Cleanup Useful but Do Not Treat It as the Only Guard
Jellyfin includes maintenance tasks that clear logs, cache, activity logs, and transcode data, but scheduled cleanup is a second line of defense rather than permission to leave logging unbounded. A task can fail, be delayed, or run after a burst has already consumed the remaining system space.
Use the dashboard task history to confirm the log-cleanup task runs successfully, then compare log-directory size before and after its next scheduled execution. If the directory never shrinks, investigate task errors or a path mismatch rather than shortening the schedule blindly.
A useful home-server pattern is to keep application state and media workflows observable without letting diagnostic files dominate the boot disk. The same resource-first approach is useful when troubleshooting Jellyfin buffering, because logs only help when they point to the actual bottleneck.
Use Debug Logging as a Timed Diagnostic Mode
When you need debug output, decide the start time, reproduction window, and stop condition before enabling it. Capture the failing action, save the relevant log slice somewhere safe, then return the configuration to normal verbosity immediately after the evidence is collected.
Do not keep debug logging enabled for days just because disk space is currently available. A low-traffic evening and a library scan can produce very different volumes, so a setting that looks harmless during one test can become expensive during scheduled work.
After returning to normal logging, restart once if the configuration requires it and reproduce a normal playback plus one scheduled task. The log growth rate should return to its baseline; if it does not, re-open the configuration and verify the expected file is the one Jellyfin actually loaded.
Add a Free-Space Stop Condition Before the Disk Becomes Critical
Set a simple alert on the filesystem that contains Jellyfin data, runtime logs, or the operating system. The threshold should leave enough room to inspect the cause and stop services safely instead of waiting until writes begin failing across the host.
If free space drops unexpectedly, stop the high-volume logging source first, preserve a small diagnostic sample, and remove only known disposable logs or caches. Do not start by deleting Jellyfin databases, configuration, or unknown volume contents to recover space.
Prevention is complete when normal playback, a library task, and a restart no longer produce unbounded growth and the alert remains comfortably above its trigger. If space still falls with logging capped, escalate to a broader disk-usage audit because the cause is no longer proven to be Jellyfin logs.
Support & Tips
More to Read

Should Jellyfin Use One Shared Account or Separate Household Accounts?
Choose Jellyfin household accounts by the identity, access, parental-control, and recovery boundaries you need.

Why Does Jellyfin Memory Use Stay High After Work Completes?
Separate Jellyfin process growth from Linux cache, and investigate only when memory keeps rising or creates real pressure.

Signs That a Jellyfin Storage Layout Is Becoming a Recovery Risk
Audit Jellyfin storage roles, separate live state from backups and rebuildable data, then prove the layout with a restore.

