Skip to content
Spell is a Streaming Parser for Event Logs using an LCS (Longest Common Subsequence)
Rust Python Shell Dockerfile
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples added new constructor with_delimiters Jan 15, 2019
fixtures Move tests data to fixture files Dec 17, 2018
python Fixes #3: Update cbindgen dependency. Jun 3, 2019
src fixed documentation Jan 15, 2019
.travis.yml Minimum version of rust: 1.31 Dec 17, 2018

spell-rs Build Status Documentation License

spell-rs is a Spell implementation in Rust.

Spell is a Streaming Parser for Event Logs using an LCS (Longest Common Subsequence).

The minimum Rust version is 1.31 due to the use crate:: syntax.


Min Du and Feifei Li. Spell: Streaming Parsing of System Event Logs. 2016 IEEE 16th International Conference on Data Mining (ICDM) pp. 859-864, Barcelona, Spain, December, 2016. DOI: 10.1109/ICDM.2016.0103.


Spell ingests log lines one by one and build up a list of formatting strings that can be used to analyze the logs. For example (see presentation slides, page 19), given the two log entries:

Temperature (41C) exceeds warning threshold
Temperature (42C, 43C) exceeds warning threshold

the LCS is:

Temperature * exceeds warning threshold

which can then be used to analyze the logs.

As of cedf57a7a73b1052de937d13150c2b9d8a03237c, the Rust implementation gives the exact same results as the Java one.

Python Wrapper

Universal Python package (wheel) can be built on all platforms using:

cd python

# Compile Rust code
pip install --editable .

# Test Python package
python ./

# Build a wheel
python --verbose bdist_wheel


This only requires Docker.

# Build a Docker image containing everything required

# Run the commands to build wheel inside a docker container

Other Implementations


This project is licensed under either of

at your option.

You can’t perform that action at this time.