LogViewer / README.md
topguy's picture
feat: Implement merged, time-sorted log view
d03dff9
---
title: LogViewer
license: mit
sdk: gradio
app_file: logviewer/app.py
colorFrom: blue
colorTo: green
sdk_version: 5.35.0
---
# LogViewer
LogViewer is a versatile tool designed for efficient viewing and filtering of log files. It offers both a user-friendly web interface built with Gradio and a powerful command-line interface (CLI) for automated processing.
## Features
* **Web Interface (Gradio):**
* Upload and display log files.
* Apply multiple filters (include/exclude text, include/exclude regex).
* Case-sensitive filtering option.
* Reorder applied filters to control processing order.
* Save and load filter configurations (JSON format).
* Download filtered log content.
* **Command-Line Interface (CLI):**
* Process log files using pre-defined filter configurations.
* Automate log analysis workflows.
## Installation
To set up LogViewer on your local machine, follow these steps:
### Prerequisites
* Python 3.8 or higher
* pip (Python package installer)
* `venv` (Python's built-in virtual environment module)
### Steps
1. **Clone the repository:**
```bash
git clone https://github.com/your-username/LogViewer.git
cd LogViewer
```
*(Note: Replace `your-username` with the actual GitHub username once the repository is created.)*
2. **Create and activate a virtual environment:**
It's highly recommended to use a virtual environment to manage project dependencies.
```bash
python -m venv venv
# On Linux/macOS:
source venv/bin/activate
# On Windows:
.\venv\Scripts\activate
```
3. **Install dependencies:**
```bash
pip install -r requirements.txt
```
## Usage
### Running with Docker Compose
Docker Compose provides an easy way to set up and run the LogViewer application in a containerized environment.
#### Prerequisites
* Docker and Docker Compose installed on your system.
#### Steps
1. **Build and run the services:**
Navigate to the root directory of the cloned repository and run:
```bash
docker compose up --build -d
```
This command builds the Docker image (if not already built) and starts the LogViewer service in detached mode.
2. **Access the Web UI:**
Open your web browser and navigate to `http://localhost:7860`.
3. **Using the CLI with Docker Compose:**
If you are running the web interface via Docker Compose, the CLI tool (`cli_app.py`) needs to connect to the Dockerized service. You will need to modify the `Client` URL in `cli_app.py` to point to the Docker container's exposed port (which is `http://localhost:7860` by default).
Locate the line `client = Client("http://localhost:7860/")` in `cli_app.py` and ensure it points to the correct address where your Docker container is accessible.
Then, you can run the CLI as usual:
```bash
python cli_app.py <log_file_path> <filter_file_path> [-o <output_file_path>]
```
4. **Stopping the services:**
To stop the running Docker containers, use:
```bash
docker compose down
```
### Web Interface (Gradio App)
To launch the interactive web interface:
1. **Start the application:**
Ensure your virtual environment is activated.
```bash
python app.py
```
2. **Access the UI:**
Open your web browser and navigate to the URL displayed in your terminal (usually `http://127.0.0.1:7860`).
**How to use:**
* **Upload Log File:** Click the "Upload Log File" button to select your log file.
* **Add Filters:** Choose a "Filter Type" (e.g., "Include Text", "Exclude Regex"), enter a "Filter Value", and check "Case Sensitive" if needed. Click "Add Filter".
* **Manage Filters:** Applied filters will appear in the "Applied Filters" list. You can select a filter and use "Remove Selected Filter", "Move Up", or "Move Down" to adjust them.
* **Save/Load Filters:** Use "Save Filters" to download your current filter configuration as a JSON file, or "Load Filters (.json)" to upload a previously saved configuration.
* **Save Filtered Log:** After applying filters, click "Save Filtered Log" to download the processed log content.
### Command-Line Interface (CLI)
To process log files using the CLI, the Gradio web application (`app.py`) **must be running** in the background, as the CLI interacts with its API.
1. **Ensure the Gradio app is running:**
Open a separate terminal, activate your virtual environment, and run:
```bash
python app.py
```
Keep this terminal open.
2. **Run the CLI tool:**
In a new terminal, activate your virtual environment and use `cli_app.py`:
```bash
python cli_app.py <log_file_path> <filter_file_path> [-o <output_file_path>]
```
* `<log_file_path>`: The path to the input log file you want to process.
* `<filter_file_path>`: The path to a JSON file containing your filter configurations (e.g., `filters.json` saved from the web UI).
* `-o <output_file_path>` (optional): The path where the filtered log content will be saved. If not provided, a default name will be generated (e.g., `your_log_filters_filtered.txt`).
**Example:**
```bash
python cli_app.py my_application.log my_filters.json -o processed_log.txt
```
## Filter File Format
Filter configurations are saved and loaded as JSON files. Each filter is an object within a list, with the following structure:
```json
[
{
"type": "Include Text",
"value": "ERROR",
"case_sensitive": true
},
{
"type": "Exclude Regex",
"value": "DEBUG|INFO",
"case_sensitive": false
}
]
```
* `type`: Can be "Include Text", "Exclude Text", "Include Regex", or "Exclude Regex".
* `value`: The string or regex pattern for the filter.
* `case_sensitive`: A boolean (`true` or `false`) indicating whether the filter should be case-sensitive.