Use a Dedicated Audit Database
Isolate the Chronicle ledger from your main application database so audit data cannot be accidentally wiped, migrated over, or affected by application schema changes.
1. Add the connection to config/database.php
'connections' => [
// your existing connections...
'audit' => [
'driver' => 'mysql',
'host' => env('AUDIT_DB_HOST', '127.0.0.1'),
'port' => env('AUDIT_DB_PORT', '3306'),
'database' => env('AUDIT_DB_DATABASE', 'chronicle_audit'),
'username' => env('AUDIT_DB_USERNAME'),
'password' => env('AUDIT_DB_PASSWORD'),
'charset' => 'utf8mb4',
'collation'=> 'utf8mb4_unicode_ci',
],
],
2. Point Chronicle at the connection
In .env:
CHRONICLE_DB_CONNECTION=audit
3. Run Chronicle migrations against the audit connection
php artisan migrate --database=audit --path=database/migrations/chronicle
Or, if you used chronicle:install:
php artisan migrate --database=audit
Chronicle reads CHRONICLE_DB_CONNECTION at runtime and directs all reads and writes to that connection.
4. Keep the connection out of your main migration history (optional)
If you prefer the audit migrations never appear in your default migrations table, run them with --pretend first to review, then execute against the audit connection as above.
Verify it worked
php artisan chronicle:stats
The command uses the configured connection — if it shows 0 entries after recording some, the connection is pointing at the wrong database.
You can also confirm directly:
php artisan tinker
>>> DB::connection('audit')->table('chronicle_entries')->count();
See also
- Config Reference —
connectionconfig key - Storage Drivers — how
DatabaseDriveruses the connection - Installation — recommended production setup