emanuele/querylog-sql

Log non-SELECT SQL queries to rotating files with daily gzip.

Maintainers

Package info

github.com/emanuelelocatelli/querylog

pkg:composer/emanuele/querylog-sql

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-main 2026-02-03 11:34 UTC

This package is auto-updated.

Last update: 2026-03-31 12:03:14 UTC


README

Package Laravel per loggare tutte le query non-SELECT in file di testo, con rotazione a 100MB e compressione giornaliera.

Installazione (locale)

Nel progetto host:

  1. Aggiungi il repository path e il require in composer.json:
{
  "repositories": [
    { "type": "path", "url": "packages/querylog-sql", "options": { "symlink": true } }
  ],
  "require": {
    "emanuele/querylog-sql": "^1.0"
  }
}
  1. Esegui composer update emanuele/querylog-sql.

Installazione (repository Git)

  1. Pubblica il pacchetto in un repo Git (privato o pubblico).
  2. Aggiungi il repository VCS e installa:
{
  "repositories": [
    { "type": "vcs", "url": "https://example.com/emanuele/querylog-sql.git" }
  ]
}
composer require emanuele/querylog-sql

Configurazione

Config pubblicabile:

php artisan vendor:publish --tag=querylog-config

Variabili supportate:

  • QUERYLOG_ENABLED (default: true)
  • QUERYLOG_PATH (default: storage/logs/querylog)
  • QUERYLOG_MAX_FILE_SIZE_MB (default: 100)
  • QUERYLOG_INCLUDE_BINDINGS (default: true)

Blocco .env di esempio:

QUERYLOG_ENABLED=true
QUERYLOG_PATH=storage/logs/querylog
QUERYLOG_MAX_FILE_SIZE_MB=100
QUERYLOG_INCLUDE_BINDINGS=true

Se le variabili non sono presenti in .env, il pacchetto usa automaticamente i valori di default indicati sopra.

Output

Ogni riga รจ nel formato:

/* YYYY-MM-DD HH:MM:SS */ SQL

I file sono in storage/logs/querylog/ e ruotano a 100MB:

querylog-YYYY-MM-DD-1.log
querylog-YYYY-MM-DD-2.log
...

Compressione giornaliera

Un job comprime i log del giorno precedente in .gz alle 23:59, e rimuove i file originali dopo la compressione.

Per schedulare il job nel progetto host, aggiungi a routes/console.php:

use Emanuele\QuerylogSql\Jobs\CompressDailyQueryLogs;
use Illuminate\Support\Facades\Schedule;

Schedule::job(new CompressDailyQueryLogs())
    ->dailyAt('23:59')
    ->withoutOverlapping(60);