Ich habe ein Python-Wörterbuch, das von der Sentry-Methode zurückgegeben wird event_from_exception()
.
Ich möchte es als nettes HTML formatieren.
Aber ich denke, das wurde schon vorher erfunden.
Erforderliche Funktionen:
Beispiel zum Erstellen der Ereignisdatenstruktur:
import sys
import json
from sentry_sdk.utils import event_from_exception
try:
raise ValueError()
except Exception as exc:
event, info = event_from_exception(sys.exc_info(), with_locals=True)
print(json.dumps(event, indent=2))
Ein allgemeiner hübscher Druck von json ist ein erster Schritt, aber so etwas ist viel besser:
Hier ist ein Beispiel, wie json aussieht:
{
"exception": {
"values": [
{
"stacktrace": {
"frames": [
{
"function": "<module>",
"abs_path": "/home/foo/tmp/t.py",
"pre_context": [
"import json",
"",
"from sentry_sdk.utils import event_from_exception",
"",
"try:"
],
"lineno": 7,
"vars": {
"exc": "ValueError()",
"__builtins__": "<module '__builtin__' (built-in)>",
"event_from_exception": "<function event_from_exception at 0x7f620a1d0578>",
"__file__": "'tmp/t.py'",
"__package__": "None",
"sys": "<module 'sys' (built-in)>",
"json": "<module 'json' from '/usr/lib/python2.7/json/__init__.pyc'>",
"__name__": "'__main__'",
"__doc__": "None"
},
"context_line": " raise ValueError()",
"post_context": [
"except Exception as exc:",
" event, info = event_from_exception(sys.exc_info(), with_locals=True)",
" print(json.dumps(event, indent=2))",
""
],
"module": "__main__",
"filename": "t.py"
}
]
},
"type": "ValueError",
"value": "",
"module": "exceptions",
"mechanism": null
}
]
},
"level": "error"
}
Ich glaube nicht, dass das, was Sie wollen, spezifisch für ist sentry_sdk
.
Sie möchten nur eine generische Funktion für pretty print
ein Python-Wörterbuch in HTML.
Es ist einfach genug, für sich selbst zu codieren (und Spaß mit Rekursion ;-), aber andere haben dieses spezielle Rad bereits erfunden.
Siehe zum Beispiel:
dieses Python-Wörterbuchobjekt für den HTML5-JSON-Formulargenerator
den Blogeintrag Pretty Printing a Python Dictionary to HTML
und diese SO-Frage , die besagt, dass Sie dies mit Pandas tun können , und zeigt, wie dieser Code:
pandas als pd importieren
a = {'Job1': {'2017-01-10': [44, 33, 11, 75, 22]},
'Job2': {'2017-01-05': [25, 25, 0, 100 , 25],
'2017-01-10': [50, 50, 0, 100, 25]},
'Job3': {'2017-01-03': [44, 22, 22, 50, 22],
'2017-01-04': [66, 36, 30, 54, 22],
'2017-01-06': [88, 52, 36, 59, 22],
'2017-01-10': [132 , 68, 64, 51, 22],
'2017-01-02': [22, 9, 13, 40, 22],
'2017-01-08': [110, 52, 58, 47, 22]} ,
'Job4': {'2017-01-10': [25, 25, 0, 100, 25]}}
df = pd.DataFrame(data=a) df = df.fillna(' ').T df
Ich wollte das JSON aus Ihrem Beispiel nehmen und es durch jedes dieser Beispiele laufen lassen, aber Sie haben es nicht gepostet und ich kann es nicht generieren, da ich es nicht habe sentry_sdk
.
Wie gesagt, ich denke, Sie wollen eine generische Lösung, nicht etwas Spezifisches für sentry_sdk
. Wenn Sie einverstanden sind, ändern Sie den Titel Ihrer Frage in etwas wie "HTML-Tabelle aus Python-Wörterbuch generieren". Ich bin mir sicher, dass @SteveBarnes und andere weitere Vorschläge machen werden, möglicherweise besser als diese.
Da ich keine Lösung finden konnte, habe ich selbst eine geschrieben: https://github.com/guettli/sentry-event-to-html
Es ist eine einfache Python-Bibliothek, die den vom Sentry-Client erstellten json nimmt und HTML erstellt.
State Unfinished
" sagt. Warum hast du uns überhaupt davon erzählt? Das hilft keinem
Mawg sagt, Monica wieder einzusetzen
Güttli
Mawg sagt, Monica wieder einzusetzen
Güttli
Mawg sagt, Monica wieder einzusetzen