--- 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 [-o ] ``` 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 [-o ] ``` * ``: The path to the input log file you want to process. * ``: The path to a JSON file containing your filter configurations (e.g., `filters.json` saved from the web UI). * `-o ` (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.