Python command-line tool for parsing, filtering, summarizing, and exporting log files.
Project description
Logan-IQ: Log Analyzer Tool
A Python command-line tool for parsing, filtering, summarizing, and exporting log files. Designed to handle multiple log formats with custom regex support and user-configurable preferences.
⚠️ Notice About Installation
Version 1.0.1 contains unintended scripts and should not be used.
Please use 1.0.2 or later for correct functionality.
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:
- 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.
- 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.
- Filter (Optional):
Narrow results by log level, date range, or limit the number of entries displayed.
- Analyze or Summarize:
Display logs in a terminal table or generate summary reports.
- 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,levelandmessage
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
On installation, a config.json is created on the user's system.
- To show configurations
logan-iq interactive
logan-iq>> config show
- To modify configurations
logan-iq>> config set --default-file logs/access.log --format nginx
logan-iq>> config set --format custom --custom-regex "^(?P<ts>\\S+) (?P<msg>.*)$"
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<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)
Dependencies
- CLI built with
Typer - Pretty tables via
Tabulate - Colored output via
PyFiglet - Unit testing via
Pytest
Developed by heisdanielade
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file logan_iq-1.0.3.tar.gz.
File metadata
- Download URL: logan_iq-1.0.3.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ded65456147572b3b2b60a80fdbe1f7d070b353ae99459b5b0ef16aa613dc0da
|
|
| MD5 |
8ae334a34628ac2fa197de6e89ebcd18
|
|
| BLAKE2b-256 |
bd422d238546e2e69596610cf665f3362afc5d4020250dc72884ee26e15793a9
|
File details
Details for the file logan_iq-1.0.3-py3-none-any.whl.
File metadata
- Download URL: logan_iq-1.0.3-py3-none-any.whl
- Upload date:
- Size: 16.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94a22965415164ae74cbcb0346cc658218ac1f5c685980172277a5c60de538a2
|
|
| MD5 |
79614f29bdcfde6c3d3984189eeb601c
|
|
| BLAKE2b-256 |
139612a612bdca4456c4337d3596cef562281f3f89b4eaedc359a47f4ae1c171
|