Skip to content

Compression

Automatically compress log files when they rotate to save disk space.

GZIP Compression

python
from logly import logger

sink_id = logger.add("app.log", rotation="daily", compression="gzip")
logger.info("Rotated files will be .gz compressed")
logger.complete()
logger.remove(sink_id)

ZIP Compression

python
from logly import logger

sink_id = logger.add("app.log", rotation="daily", compression="zip")
logger.info("Rotated files will be .zip compressed")
logger.complete()
logger.remove(sink_id)

BZ2 Compression

python
from logly import logger

sink_id = logger.add("app.log", rotation="daily", compression="bz2")
logger.info("Rotated files will be .bz2 compressed")
logger.complete()
logger.remove(sink_id)

XZ Compression

python
from logly import logger

sink_id = logger.add("app.log", rotation="daily", compression="xz")
logger.info("Rotated files will be .xz compressed")
logger.complete()
logger.remove(sink_id)

Zstandard Compression

python
from logly import logger

sink_id = logger.add("app.log", rotation="daily", compression="zstd")
logger.info("Rotated files will be .zst compressed")
logger.complete()
logger.remove(sink_id)

All Compression Formats

python
from logly import logger

sink_id1 = logger.add("gzip.log", rotation="daily", compression="gzip")
sink_id2 = logger.add("zip.log", rotation="daily", compression="zip")
sink_id3 = logger.add("bz2.log", rotation="daily", compression="bz2")
sink_id4 = logger.add("xz.log", rotation="daily", compression="xz")
sink_id5 = logger.add("zstd.log", rotation="daily", compression="zstd")

logger.info("All compression formats supported")
logger.complete()
logger.remove(sink_id1)
logger.remove(sink_id2)
logger.remove(sink_id3)
logger.remove(sink_id4)
logger.remove(sink_id5)

Combined with Size Rotation

python
from logly import logger

sink_id = logger.add(
    "logs/app.log",
    rotation="50 MB",
    retention=30,
    compression="gzip",
)
logger.info("Size rotation + 30-day retention + gzip")
logger.complete()
logger.remove(sink_id)

Combined with Time Rotation

python
from logly import logger

sink_id = logger.add(
    "logs/app.log",
    rotation="daily",
    retention="30 days",
    compression="zstd",
)
logger.info("Daily rotation + 30-day retention + zstd")
logger.complete()
logger.remove(sink_id)

Compression with Clock Rotation

python
from logly import logger

sink_id = logger.add(
    "logs/app.log",
    rotation="02:00",  # rotate at 2 AM
    retention=14,
    compression="gzip",
)
logger.info("Clock rotation + 14-day retention + gzip")
logger.complete()
logger.remove(sink_id)

Compression with Weekday Rotation

python
from logly import logger

sink_id = logger.add(
    "logs/app.log",
    rotation="weekly",  # rotate every Monday
    retention=8,  # keep 8 weeks
    compression="bz2",
)
logger.info("Weekly rotation + 8-week retention + bz2")
logger.complete()
logger.remove(sink_id)

No Compression

python
from logly import logger

sink_id = logger.add(
    "app.log",
    rotation="daily",
    compression="none",  # explicitly disable compression
)
logger.info("Rotated files will not be compressed")
logger.complete()
logger.remove(sink_id)

Disk I/O

Compression adds CPU overhead at rotation time. Use it with time or size rotation, not with retention=0.

Released under the MIT License.