CLP (Compressed Log Processor) is YScope's free, Apache-2.0 licensed log management tool, written in C++, that compresses JSON and unstructured logs and allows those compressed logs to be searched without decompression, aimed at engineers and operators who store and query large volumes of logs.
What it is
YScope's Compressed Log Processor is a log management system built around a single idea: logs should be compressed as early as possible and searched in their compressed form. It provides an end-to-end pipeline covering compression, search, analytics, and viewing, and it accepts two kinds of input — raw logs, or CLP's compressed intermediate representation (IR) produced by CLP's own logging libraries. Logs are compressed into archives, which can then be searched and analyzed through a purpose-built web UI.
The concrete problem it solves is the cost of index-based log storage. Searching logs conventionally means building and maintaining an index before any query can run, which consumes storage and compute whether or not anyone queries the data. CLP uses an index-less design, so logs are compressed and searched directly. In the project's benchmarks, this design is measured against Elasticsearch and Splunk, which are fundamentally index-based and cannot be searched without indexes, and against MongoDB and PostgreSQL, whose indexes were disabled for a fair comparison because enabling them would have worsened their compression ratio. It also replaces general-purpose compression for log data: CLP's IR format achieves a higher compression ratio than general-purpose compressors such as Zstandard.
Key capabilities
- Compresses logs into archives and searches those archives without decompressing them first.
- Handles both JSON logs and unstructured, free-text logs.
- Provides real-time compression through logging libraries for Python and Java (Log4j1, Log4j2, and Logback appenders), so only compressed logs are written to disk or transmitted over the network.
- Writes compressed logs in CLP's intermediate representation (IR) format; re-compressing IR into archives can roughly double the compression ratio and enable global search, at the cost of buffering enough logs in memory.
- Ships a web UI (
components/webui) for searching and viewing compressed logs, plus a log viewer that filters by log level verbosity, for example showing only logs at ERROR or above.
- Provides IR analytics libraries for Python (
clp-ffi-py) and Go (clp-ffi-go).
- Includes
log-surgeon, a pushdown-automata-based log parser described as 3x faster.
Who uses it and how
- Teams running JSON-emitting services, such as the MongoDB logs used for CLP's JSON benchmarks, who need compressed storage plus fast queries over that data.
- Teams with unstructured or free-text logs, such as the Hadoop logs used for the unstructured benchmarks, where no fixed schema exists to index against.
- Applications written in Python or Java that adopt CLP's logging libraries so that compressed logs alone are written to disk or sent across the network, rather than full-text logs that are compressed later.
- Operators who prefer a web UI for searching and viewing logs over grepping files by hand, and who want log-level filtering to cut noise during debugging.
- Environments where index maintenance is the bottleneck, since CLP's index-less design removes the need to build indexes before searching.
Getting started
The facts supplied do not include an install command, package name, Docker image, or compose file, so the entry points to work from are CLP's logging libraries for Python and Java, the web UI in components/webui, and the project's 2021 and 2024 papers. Installation and deployment specifics should be taken from the repository README rather than assumed.
How it compares
Among the tools named in CLP's own benchmarks, Elasticsearch and Splunk are index-based systems that cannot search logs without indexes, while MongoDB and PostgreSQL were compared with indexing disabled. CLP positions itself as the index-less alternative, accepting raw logs or its IR format and searching compressed archives directly. Against general-purpose compressors such as Zstandard, CLP's IR format is documented as achieving a higher compression ratio for logs.
When to use it — and when not to
A self-hoster takes on operating a compression and search pipeline, managing the trade-off between IR and archives, and provisioning enough memory to buffer logs when archive-level global search is required. CLP is a poor fit for anyone who wants a managed service with no operational surface, or who depends on a rich ecosystem of pre-built index-based plugins and integrations. Two weaknesses are visible in the facts: the repository carries 493 open issues against roughly 1,088 stars, and the README excerpt does not document installation, leaving setup discovery to the full repository.
project readme (upstream, from github) — read inline


YScope's Compressed Log Processor (CLP) compresses your logs, and allows you to search the
compressed logs without decompression. CLP supports both JSON logs and unstructured (i.e., free
text) logs. It also supports real-time log compression within several logging libraries. CLP also
includes purpose-built web interfaces for searching and viewing the compressed logs. To learn more
about it, read our 2021 paper about handling unstructured logs and our
2024 paper on extending it to JSON logs.
Benchmarks

The figures above show CLP's compression and search performance compared to other tools. We separate
the experiments between JSON and unstructured logs because (1) some tools can only handle one type
of logs, and (2) tools that can handle both types often have different designs for each type (such
as CLP).
Compression ratio is measured as the average across a variety of log datasets. Some of these
datasets can be found here. Search performance is measured using queries on the
MongoDB logs (for JSON) and the Hadoop logs (for unstructured logs). Note that CLP uses an
index-less design, so for a fair comparison, we disabled MongoDB and PostgreSQL's indexes; If we
left them enabled, MongoDB and PostgreSQL's compression ratio would be worse. We didn't disable
indexing for Elasticsearch or Splunk since these tools are fundamentally index-based (i.e., logs
cannot be searched without indexes). More details about our experimental methodology can be found in
the 2021 paper and the 2024 paper.
System Overview

CLP provides an end-to-end log management pipeline consisting of compression, search, analytics, and
viewing. The figure above shows the CLP ecosystem architecture. It consists of the following
features:
Compression and Search: CLP compresses logs into archives, which can be searched and analyzed
in a web UI. The input can either be raw logs or CLP's compressed IR
(intermediate representation) produced by CLP's logging libraries.
Real-time Compression with CLP Logging Libraries: CLP provides logging libraries for
Python and Java (Log4j1, Log4j2 and
Logback). The logging libraries compress logs in real-time, so only
compressed logs are written to disk or transmitted over the network. The compressed logs use CLP's
intermediate representation (IR) format which achieves a higher compression ratio than general
purpose compressors like Zstandard. Compressing IR into archives can further double the
compression ratio and enable global search, but this requires more memory usage as it needs to
buffer enough logs. More details on IR versus archives can be found in this
Uber Engineering Blog.
Log Viewer: the compressed IR can be viewed in a web-based log viewer. Compared
to viewing the logs in an editor, CLP's log viewer supports advanced features like filtering logs
based on log level verbosity (e.g., only displaying logs with log level equal or higher than
ERROR). These features are possible because CLP's logging libraries parse the logs before
compressing them into IR.
IR Analytics Libraries: we also provide a Python library and a
Go library that can analyze compressed IR.
Log parser: CLP also includes a custom pushdown-automata-based log parser that
is 3x faster than state-of-the-art regular expression engines like RE2. The log parser is
available as a library that can be used by other applications.
Getting Started
You can download a release package which includes support
for distributed compression and search. Or, to quickly try CLP's core compression and search, you
can use a prebuilt container.
We also have guides for building the package and CLP core from source.
For some logs you can use to test CLP, check out our open-source datasets.
Docs
You can find our docs online or view the source in docs/src.
Providing Feedback
You can use GitHub issues to report a bug or request a feature.
Community
Need help? Join us on one of our community servers:
Next Steps
This is our open-source release which we will be constantly updating with bug fixes, features, etc.
If you would like a feature or want to report a bug, please file an issue and we'll be happy to engage.