javascript / expert
Snippet
Strukturierte Anpassung von Stack-Traces
V8 bietet eine Nicht-Standard-API zur Anpassung von Stack-Traces. Durch Überschreiben von 'Error.prepareStackTrace' können Sie das Array von CallSite-Objekten abfangen. Dies erlaubt es, Logs als strukturiertes JSON zu formatieren, anstatt reine Strings parsen zu müssen.
snippet.js
1
2
3
4
5
6
7
8
9
10
Error.prepareStackTrace = (err, stack) => {return stack.map(frame => ({function: frame.getFunctionName(),file: frame.getFileName(),line: frame.getLineNumber()}));};const getTrace = () => new Error().stack;console.log(getTrace());
nodejs
Erklärung
1
Error.prepareStackTrace = (err, stack) => {
Globaler Override, der definiert, wie Stack-Traces für alle Fehler formatiert werden.
2
frame.getFunctionName(),
Greift auf den Namen der Funktion zu, in der der Fehler oder Trace auftrat.
3
return stack.map(frame => ({ ... }));
Konvertiert rohe V8-CallSite-Objekte in ein sauberes, serialisierbares JavaScript-Array.
4
const getTrace = () => new Error().stack;
Der Zugriff auf '.stack' löst den oben definierten benutzerdefinierten Formatierer aus.