emanuele / querylog-sql
Log non-SELECT SQL queries to rotating files with daily gzip.
dev-main
2026-02-03 11:34 UTC
Requires
- php: ^8.2
- illuminate/console: ^11.0
- illuminate/database: ^11.0
- illuminate/support: ^11.0
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:
- Aggiungi il repository
pathe il require incomposer.json:
{
"repositories": [
{ "type": "path", "url": "packages/querylog-sql", "options": { "symlink": true } }
],
"require": {
"emanuele/querylog-sql": "^1.0"
}
}
- Esegui
composer update emanuele/querylog-sql.
Installazione (repository Git)
- Pubblica il pacchetto in un repo Git (privato o pubblico).
- 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);