Seite 1 von 1

Logging File

Verfasst: Dienstag 7. Mai 2019, 08:49
von EllaBtz
Hallo,

ich möchte gerne in meinem Python Skript ein Logfile erstellen, welches testet, ob die Datei bestimmte Formate einhält. Zum Beispiel dass unterhalb der Überschriften jeweils eine Leerzeile gelassen wird und wenn diese Leerzeile fehlt, soll er ein Logfile ausgeben, in dem steht, dass diese Leerzeile eben fehlt.
Kann mir da jemand helfen bzw einen Ansatz geben?

Grüße

Re: Logging File

Verfasst: Dienstag 7. Mai 2019, 09:07
von Bolitho
Hi, woran genau scheiterst du denn? Am besten postest du deinen Ansatz hier und es wird sich jemand finden, der dir weiterhilft. Zum Posten von Code bitte die Code-Tags verwenden. </>

Re: Logging File

Verfasst: Dienstag 7. Mai 2019, 09:14
von __deets__
Mit logging hat das ja erstmal nichts zu tun. Der erste Schritt besteht in einer Validierung der eingabe, deren Ergebnis man dann weiter verarbeitet. Logging ist eine Möglichkeit, einen Verarbeitungsprozess zu steuern jene andere. Und die Valididierung erfolgt üblicherweise durch das parsen der eingabe, gefolgt von einer Prüfung bestimmter Eigenschaften auf dem durch das parsen erzeugten Datenmodell. Beispiele sind zb XML und die diversen dafür existententen Schema-Spezifikation.

Welches Format liegt denn deinen Dateien zugrunde? Es gibt ja viele, zb Markdown etc. Gibt es dafür bereits einen Parser?

Re: Logging File

Verfasst: Dienstag 7. Mai 2019, 09:24
von EllaBtz
Ja, ist ein Markdown file, es gibt auch schon einen Parser.

ich bräuchte nur einen ansatz, wie man dem Parser sagt, dass er nach bestimmten Eigenschaften in diesem md file suchen soll

Re: Logging File

Verfasst: Dienstag 7. Mai 2019, 09:59
von __blackjack__
@EllaBtz: Dazu sind Parser nicht da. Die parsen ein Eingabeformat in eine interne Darstellung. Nach Eigenschaften suchen musst Du schon selbst. Und eventuell sind diese Eigenschaften des Eingabeformats nach dem parsen in der internen Darstellung dann auch gar nicht mehr da, so dass Du Dir selbst einen Parser schreiben musst der die Informationen erhält die Du benötigst um Deine Prüfungen zu machen. Zum Beispiel ist eine Leerzeile zwischen Überschrift und Text in Markdown nicht erforderlich. Eine eventuell vorhandene Leerzeile (oder auch mehrere) werden von den meisten Parsern aber einfach ignoriert/verworfen, denn die trägt nicht zum Endergebnis bei.

Edit: Und nur um mal zu zeigen dass das gar nicht so einfach zu erkennen ist was eine Überschrift ist und was nicht:

Code: Alles auswählen

# Headline
sc
ss

<pre>
# No headline
blah
</pre>

    # No headline
    foo

  # Headline
text
Man kann das bei dem Farbschema von dem Syntaxhighligthing hier nicht wirklich gut erkennen, aber der hier verwendete Highlighter bekommt das zum Beispiel schon mal nicht zuverlässig hin wie es aussieht.

Re: Logging File

Verfasst: Dienstag 7. Mai 2019, 10:30
von EllaBtz
Die Überschriften sind jeweils mit # versehen, z.b ##Titel##
Löscht man die Leerzeile unterhalb dieser Überschrift, bricht der Parser ab und es entsteht ein Fehler, dann bekomm ich aber nur eine Email mit "Pipeline has failed", ich möchte aber dass dann z.B "Logfile Warning: dont remove empty lines" drinnen steht ..

Re: Logging File

Verfasst: Dienstag 7. Mai 2019, 10:33
von __deets__
Welchen Fehler bekommst du denn GENAU? Denn eigentlich sollte ein Parser an dieser Stelle einen Fehler werfen, den du abfangen kannst & den du dann in eine gute Log-Meldung verwandeln kannst.

Re: Logging File

Verfasst: Dienstag 7. Mai 2019, 10:46
von EllaBtz
</>
args.func(args, all_profiles)
File "/src/main.py", line 54, in process_commit
testing(company, profile, args, use_artifacts_dir=True)
File "/builds/src/test.py", line 55, in testing
sed_inplace(maintex, r'{longtable}\[c\]', '{longtable}[]')
File "/builds/src/util.py", line 28, in sed_inplace
with io.open(filename, encoding='utf8') as src_file:
FileNotFoundError: [Errno 2] No such file or directory: 'artifacts/xy.tex'
ERROR: Job failed: exit code 1
</>

Das steht in der Email "Pipeline has failed"

Re: Logging File

Verfasst: Dienstag 7. Mai 2019, 11:02
von __blackjack__
@EllaBtz: So einfach ist das nicht denn wie mein Beispiel zeigt ist nicht alles was mit # versehen ist auch eine Überschrift. Ob Leerzeichen davor sein dürfen wird von unterschiedlichen Parsern unterschiedlich gehandhabt, aber ich habe bisher noch keinen gesehen bei dem nach der Überschrift eine Leerzeile sein muss. Das Original `Markdown.pl` erwartet das nicht, Pandoc auch nicht, ebensowenig StackOverflow.

Re: Logging File

Verfasst: Dienstag 7. Mai 2019, 11:05
von __deets__
Die Fehlermeldung ist leider nicht wirklich verwertbar, denn augenscheinlich wird da nur auf die Existenz eines Resultats geschaut. Wie sieht denn der Code aus, der das Markdown in Tex wandelt?

Re: Logging File

Verfasst: Dienstag 7. Mai 2019, 11:35
von __blackjack__
Ich frage mich dann auch gerade ob das Problem tatsächlich „keine Leerzeile *nach* einer Überschrift“ ist und nicht eher „keine Leerzeile *vor* etwas“ das eine Leerzeile verlangt‽