Logging mit Vala

8

Ich bin neu in der Programmierung von Vala und habe Erfahrungen mit Java und .NET, aber ich konnte nichts finden, was nützlich ist, um mit Vala zu loggen. Gibt es irgendwelche nützlichen Protokollierungsmöglichkeiten wie log4j oder log4net oder wie ist die vorgeschlagene Methode, um sich in Vala einzuloggen, indem man in verschiedene Protokollierungsstufen wie Fehler, Warnung, Debug und Trace skaliert? Und was ist mit defensiver Programmierung wie Behauptungen und Verträgen? Gibt es irgendwelche oder was ist der empfohlene Weg, defensive Programmierung zu machen und die meisten nützlichen Logs mit Stack-Spuren und genauer Ursache zu bekommen? Danke für einen Hinweis.

    
Martin Macak 01.05.2012, 16:28
quelle

3 Antworten

22

Protokollierung

Vala hat einige ziemlich robuste Protokollierungsfunktionen eingebaut. Sie können debug() , message() , warning() , error() und critical() als Abkürzungen für das etwas komplexere log() Funktion. Alle sind in der Basis enthalten (automatisch enthalten) GLib namespace .

Wenn Sie die Protokollausgabe umleiten oder verschiedene Arten von Nachrichten an verschiedene Ziele senden möchten, finden Sie alles in GLib.Log Namensraum . Vielleicht möchten Sie die glib-Dokumentation zum Logging lesen, um zu erfahren, was hinter den Kulissen passiert .

Defensive Programmierung

Vala beinhaltet auch Unterstützung für Behauptungen und Verträge. Die Kurzversion: assert() und assert_not_reached() für Assertions und requires() und ensures() in Methodensignaturen für Verträge. Weitere Informationen finden Sie im Abschnitt " Zusicherungen und Vertragsprogrammierung .

Fehlerbehandlung

Die Fehlerbehandlung von Vala ist etwas seltsam: ähnlich wie Ausnahmen aussehen, aber nicht ganz gleich. Der Tutorial-Abschnitt zu Fehlerbehandlung deckt die Grundlagen ziemlich gut ab, und es könnte auch hilfreich sein, glib docs on errors , um ein besseres Verständnis dafür zu bekommen, was hinter den Kulissen passiert. Soweit ich weiß, gibt es keine Möglichkeit, einen Stack-Trace von Vala-Fehlern zu bekommen - nur ein Typ und eine Nachricht.

Best Practices

Im Hinblick auf Best Practices denke ich, dass Vala mit Java oder C # vergleichbar genug ist, dass die Praktiken, die Sie bereits kennen, allgemein angewendet werden können. Ich schlage vor, mit diesen Funktionen herumzuspielen, um ein Gefühl dafür zu bekommen, wie die Details in Vala aussehen. Viel Glück!

    
chazomaticus 01.05.2012, 21:05
quelle
3

Als Ergänzung zur großartigen Antwort von @chazomaticus können Sie Stacktrace von Vala abrufen, indem Sie den Aufrufstapel auflösen.

Es ist nur, dass dies nicht in die Vala-Sprache eingebacken ist.

Ich habe zufällig eine solche Bibliothek geschrieben: ivy

    
Name is carl 21.04.2015 18:07
quelle
1

Ich möchte 2 Dinge zu @chazomaticus hinzufügen:

  1. Warum kann ich keine Debug / Log-Ausgaben sehen?

    Sie müssen die Umgebungsvariable G_MESSAGES_DEBUG auf all setzen. Das wird auch in der Dokumentation erwähnt, aber nicht weiter erläutert. Z.B. für debuggen :

    %Vor%

    Wenn Sie die Ausgabe weiter einschränken möchten, Sie können error , warning , critical , message , info , debug und help anstelle von all verwenden.

  2. Wo finde ich die Dokumentation für jede Logging-Funktion?

Weiterführende Literatur:

Murmel 21.12.2017 19:37
quelle