Skip to content

loqLog Query

Like jq, but for logs. A modern, cross-platform replacement for Microsoft Log Parser 2.2.

Quick Example

bash
# Query a CSV file
loq "SELECT name, age FROM users.csv WHERE age > 30 ORDER BY age DESC"

# Analyze web server logs
loq -i:W3C "SELECT cs-uri-stem, COUNT(*) FROM access.log GROUP BY cs-uri-stem"

# Generate a chart
loq -o:CHART -chartType:Bar --ofile:status.png \
  "SELECT status, COUNT(*) FROM logs.csv GROUP BY status"

# Query S3 data
loq -i:S3 "SELECT * FROM 's3://bucket/logs/*.csv' WHERE level = 'ERROR'"

Why loq?

FeatureMS Log Parser 2.2loq
PlatformWindows onlyWindows, macOS, Linux
PerformanceBaseline2-5x faster
Window FunctionsNoYes
SubqueriesLimitedFull support
JOINsBasicINNER, LEFT, CROSS
Cloud IntegrationNoS3, CloudWatch, Parquet
Container SupportNoDocker, Kubernetes
Active DevelopmentAbandonedActive

Installation

bash
# Using Homebrew (coming soon)
brew install loq

# From source
cargo install loq
bash
# Using Scoop (coming soon)
scoop install loq

# From source
cargo install loq
bash
docker pull loq/loq:latest
docker run --rm -v $(pwd):/data loq "SELECT * FROM /data/file.csv"

Supported SQL

sql
-- Aggregations
SELECT department, COUNT(*), AVG(salary)
FROM employees.csv
GROUP BY department
HAVING COUNT(*) > 5;

-- Window functions
SELECT name, salary,
       RANK() OVER (PARTITION BY dept ORDER BY salary DESC) as rank
FROM employees.csv;

-- JOINs
SELECT u.name, o.total
FROM users.csv u
INNER JOIN orders.csv o ON u.id = o.user_id;

-- Subqueries
SELECT * FROM products.csv
WHERE price > (SELECT AVG(price) FROM products.csv);

Input Formats

loq supports 20+ input formats out of the box:

FormatDescriptionExample
CSVComma-separated valuesloq "SELECT * FROM data.csv"
JSONJSON and NDJSONloq -i:JSON "SELECT * FROM data.json"
W3CIIS W3C extended logsloq -i:W3C "SELECT * FROM access.log"
EVTXWindows Event Logsloq -i:EVTX "SELECT * FROM System.evtx"
S3Amazon S3 objectsloq -i:S3 "SELECT * FROM 's3://bucket/key'"
FSFilesystem metadataloq -i:FS "SELECT * FROM '/var/log'"

View all input formats

Get Involved

All rights reserved.