yscope-log-viewer
is a tool that can be used to view log files. It currently
supports CLP's compressed log files (IR streams) and JSON log files.
The viewer can be used to navigate the log file, filter by log level, view the
logs with syntax highlighting, and generate direct links to specific log events.
See the online demo section to try out the log viewer on a sample log file. To set up a local server, follow the build guide.
See the features in development section for upcoming features.
- A demo of the log viewer can be found here.
- The demo loads a Hadoop YARN log file from the hive-24hrs log dataset.
- More info on the dataset and other datasets can be found here.
- To open an IR stream, drag and drop it onto the log viewer or use the open file dialog.
IR stream log files can currently be generated using these libraries:
- Log4j Logging Library
- Logback Logging Library
- Python Logging Library
- Golang Logging Library (in development)
The log viewer is written using the ReactJS framework and uses the open source monaco-editor and clp-ffi-js.
The viewer spawns a worker to assist with computationally intensive tasks such as:
- Deserializing the file and creating an index of logs events.
- Paginating the indexed logs.
- Decoding the deserialized log events into plain text.
Tasks are passed to the worker as needed and changes are rendered in the UI.
You can use GitHub issues to report a bug or request a feature.
Join us on Zulip to chat with developers and other community members.
See the docs in our developer guide.
- Pretty printing to enhance the readability of structured data in the logs.
- A dashboard to visualize the distribution of log types and log levels.
- Support for plain text, archived log files, and other requested formats.
- Searching within a file, multiple files, or within provided time ranges.
- Infinite scrolling instead of pagination.
- Log correlation with sync by timestamp across multiple editors.
- Automatic conversion of text log files to IR stream format in the browser.
- Deployment of components via NPM.