An extensible log viewer inspired by TextAnalysisTool.NET. Like that tool Siskiyou is designed to excel at viewing, searching, and navigating large files quickly and efficiently. On top of that it contains extensibility points so you can customize it to parse arbitrary formats and extract useful information.
Live demo: https://philipbeber.github.io/siskiyou/demo.
The following are implemented as Angular services which makes it easy for you to write your own implementations and inject them into Siskiyou.
Unpacks the input files into distinct InputFile
objects. The default implementation will produce one InputFile
for each text file. It will also recurse through zip files and output one InputFile
for each leaf file. A custom implementation might, for example, ignore certain files based on their file name.
Provides an interface to read the content of a file, turning it into lines of text. The default implementation opens File
or JSZipObject
objects and assumes they are plain text. It normalizes newlines, accepting '\n', \n\r' or \r\n'. If you wanted to add support for different character encodings this would be the place to do it.
Turns lines of text into log messages. Accepts an InputFile
object and outputs zero or more Log
objects (usually one). A Log
object is mostly just a list of LogLine
objects. The default implementation simply creates one LogLine
for each line of text. A custom log parser might handle the case where log messages span multiple lines and logic is needed to combine them together. This would also be the place to extract custom information from the text and attach it to the LogLine object (e.g. timestamp, severity, etc).
Merges lines from multiple Log objects into a single list of lines. The default implementation simply appends the log files. A custom implementation might do something like merge logs from different servers and interleave the lines based on their timestamps.
Install node version 12.
Run npm install
Run npm start
for a dev server. Navigate to http://localhost:4200/
. The app will automatically reload if you change any of the source files.
Run npm run build
to build the project. The build artifacts will be stored in the dist/
directory.
Run npm run test
to execute the unit tests via Karma.
Run npm run e2e
to execute the end-to-end tests via Protractor.