0 Tage Serie
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
javascript
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.