Skip to main content

Python command-line tool for parsing, filtering, summarizing, and exporting log files.

Project description

Logan-IQ: Log Analyzer Tool

Version Issues

A Python command-line tool for parsing, filtering, summarizing, and exporting log files. Designed to handle multiple log formats with regex support and user-configurable preferences.

Features

  • Parse logs using regex patterns (default or custom)
  • Filter logs by level, date range, or limit
  • Generate summary tables
  • Export logs to CSV or JSON
  • Interactive CLI
  • Colorful output and clean formatting
  • Easily testable and extensible

Install

Package is available on PyPI

pip install logan-iq

This installs the CLI globally and makes the logan-iq command available in your terminal.

How it Works

Core flow:

  1. Load Config or Defaults: Loads user preferences from config.json if it exists. CLI arguments always override the config file. If no file is provided and no config exists, the app prompts the user to specify a file.
  2. Parse Log File:

Each log line is converted into a structured dictionary with fields like datetime, level, message,and optionally ip or other fields depending on the format.

  1. Filter (Optional):

Narrow results by log level, date range, or limit the number of entries displayed.

  1. Analyze or Summarize:

Display logs in a terminal table or generate summary reports.

  1. Export (Optional):

Export filtered data to CSV or JSON for further analysis.

Available Formats

You can supply your own regex directly via CLI or in config.json. Or use the Built-in formats:

  • simple → generic logs with datetime, level and message
2025-08-28 12:34:56 [INFO] Server started: Listening on port 8080
  • apache → Apache access logs (common format)
192.200.2.2 - - [28/Aug/2025:12:34:56 +0000] "GET /index.html HTTP/1.1" 200 512
  • nginx → Nginx access logs (combined format, includes referrer & user-agent)
192.100.1.1 - - [28/Aug/2025:12:34:56 +0000] "GET /index.html HTTP/1.1" 200 1024 "http://example.com" "Mozilla/5.0"
  • custom → Any user-defined regex Example (inline via CLI):
python main.py analyze --file logs/app.log --format custom --regex "^(?P<ts>\S+) (?P<level>\w+) (?P<msg>.*)$"

Or define in config.json:

{
  "default_file": "logs/custom_app.log",
  "format": "custom",
  "custom_regex": "^(?P<ts>\\S+) (?P<level>\\w+) (?P<msg>.*)$"
}

Running the CLI

Once installed, commands can be run directly via logan-iq:

  • For Interactive Mode
logan-iq interactive
logan-iq>> analyze --file logs/access.log --format nginx
  • Analyze Logs
logan-iq analyze --file path/to/logfile.log --format apache
  • Custom Regex
logan-iq analyze --file app.log --format custom --regex "^(?P<ts>\S+) (?P<msg>.*)$"
  • Summarize Log Levels
logan-iq summarize --file path/to/logfile.log
  • Export Logs
logan-iq export --file path/to/logfile.log --output-format csv --output-path logs.csv

Configuration

Defaults can be set in src/config.json:

Example with built-in format:

{
  "default_file": "logs/server_logs.log",
  "format": "nginx"
}

Example with custom format:

{
  "default_file": "logs/app.log",
  "format": "custom",
  "custom_regex": "^(?P<ts>\\S+) (?P<level>\\w+) (?P<msg>.*)$"
}
  • CLI args always override config values.

  • If neither CLI args nor config exist, the app prompts for a file.

Testing

Run tests from root directory:

pytest -s
  • Validates parsing, filtering, summarization, export, and error handling.
  • Editable install ensures tests can import modules with absolute imports.

Project Structure

.
├── src/logan_iq/          # Core logic
│   ├── __init__.py
│   ├── __main__.py            # CLI entry point
│   ├── core/
│   │    ├── analyzer.py
│   │    ├── parser.py
│   │    ├── filter.py
│   │    ├── summary.py
│   │    ├── exporter.py
│   │    └── config.py
│   │    └── helpers.py
│   └── tests/                 # Unit tests
├── LICENSE
├── README.md
├── pyproject.toml
└── venv/                      # Virtual environment (optional)

Additional Info

  • CLI built with Typer
  • Pretty tables via Tabulate
  • Colored output via PyFiglet
  • Unit testing via Pytest

Developed by heisdanielade


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

logan_iq-1.0.2-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file logan_iq-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: logan_iq-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for logan_iq-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a984cf6916adac8063f05255dae8cb5bf473415764802c4a208cf97e890f0ed1
MD5 7e98a755807521173e32847a303bde75
BLAKE2b-256 cf8cfef38c6df974b568f6293650f35d55a65a081842952d961902de94c5c5f0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page