Was macht das Error-Tracking?
JTL speichert Core- und DB-Fehler im Systemlog (tjtllog) oft nur als Halb-Log: die SQL-Query, aber ohne Stacktrace und ohne den Hinweis, welcher Code den Fehler ausgelöst hat. Das DZM-Logsystem schreibt strukturiert nach tDZMLogEntries (Level, Kontext, Stacktrace, Request-ID) und zeigt die Einträge unter Logs an.

Zwei Bausteine erweitern das gezielt:
- Core-Log-Mirror (in
dzm_resources): spiegelt JTLs eigene Fehler angereichert um einen rekonstruierten Aufrufer-Stack ins DZM-Log. Das ist der einzige Weg, an die gefangenen DB-Fehler heranzukommen. - Plugin-freies Snippet (ohne
dzm_resources): fängt Fatals/OOM/weißen Screen und uncaught Exceptions mit vollem Stack in eine Log-Datei – als frühes Netz oder für Shops ganz ohne DZM-Plugins.
Core-Log-Mirror aktivieren
Ein Einzeiler in derconfig.JTL-Shop.ini.php. Danach landen JTLs Core-/DB-Fehler zusätzlich als Plugin “jtl_core” in den Logs – inklusive Stack.

includes/config.JTL-Shop.ini.php. Voraussetzung: JTL loggt den Fehler überhaupt (DB-Fehler-Logging hängt an ES_DB_LOGGING). Nur Error-Level wird gespiegelt.
Logger-Konfiguration
Aktuelle Werte derDZM_LOGGER_*-Konstanten. Gesetzt in config.JTL-Shop.ini.php; ohne defined() gilt der Default.

boolean
default:"true"
Master-Switch.
false → log() kehrt sofort ohne Aktion zurück.select
default:"db"
Speicher-Ziel.
db = nur DB (mit File-Fallback bei DB-Fehler), file = nur Datei, both = beides.Möglich: db | file | bothselect
default:"warning"
PSR-3-Mindestlevel. Einträge unterhalb werden verworfen (Performance-Guard, ohne Context-Serialisierung).Möglich:
emergency | alert | critical | error | warning | notice | info | debugnumber
default:"14"
Aufbewahrungsdauer in Tagen für DB-Einträge und Log-Files. Cleanup mit Wahrscheinlichkeit 1/500 pro Write.
number
default:"10"
Rotation-Schwelle pro Log-Datei in MB. Bei Überschreitung wird -1, -2 … angehängt.
string
Zielverzeichnis für Log-Files (Trailing-Slash). Wird beim ersten File-Write angelegt inkl.
.htaccess.boolean
default:"false"
CrashHandler aktivieren: uncaught Throwables + Fatal Errors via
set_exception_handler/shutdown_function erfassen.boolean
default:"false"
Zusätzlich
set_error_handler für Warnings/Notices/Deprecated registrieren (respektiert @-Suppression).boolean
default:"false"
JTL-Core-Systemlog (
tjtllog, z.B. “Error executing query …”) zusätzlich als Plugin “jtl_core” in tDZMLogEntries spiegeln – angereichert um einen rekonstruierten Aufrufer-Stack. Nur Error-Level.Plugin-freies Error-Tracking (ohne dzm_resources)
Für Shops ohne DZM-Plugins oder als frühes Netz. Fängt Fatals/OOM + uncaught Exceptions mit Stack, schreibt nachjtllogs/dzm-selfcheck/.

includes/config.JTL-Shop.ini.php einfügen.
Erfasst genau die Fehler, die JTL selbst verschluckt oder nur als Halb-Log speichert:
- Fatal Errors / Out-of-Memory / weißer Screen (Shutdown, zuverlässig)
- uncaught Exceptions mit vollem Stacktrace (chained)
shop_root/jtllogs/dzm-selfcheck/ (JTLs jtllogs-Ordner ist per .htaccess vor Web-Zugriff geschützt; zusätzlich legt der Block ein eigenes Deny-.htaccess an).define('DZM_ERRORLOG_ENABLED', false); oder diesen Block löschen.
Eigener Pfad: define('DZM_ERRORLOG_DIR', '/absoluter/pfad/'); (vor diesem Block setzen)