2016-05-05 8 views
8

Ich habe nach Richtlinien gesucht, aber ohne Erfolg. In einem Projekt verwende ich oft Django data migrations. Sie sehen mehr oder weniger wie das Beispiel aus der Dokumentation aus. Die Operationen sind jedoch manchmal ziemlich komplex und es wäre schön, eine Konsolenausgabe zu haben, die die ausgeführten Operationen zusammenfasst (d. H. Was gelöscht/erstellt/neu verdrahtet wurde/usw. und warum).Ist es OK, in Django-Datenmigrationen auf stdout oder stderr zu drucken? Wenn das so ist, wie?

Die Frage ist also: Ist es in Ordnung, eine solche Protokollierung in eine Migration zu programmieren? Wenn ja, ist es besser, Pythons logging Modul oder nur print zu verwenden? Im ersten Fall wäre wahrscheinlich eine zusätzliche Konfiguration erforderlich, um diese Protokolle sichtbar zu machen (in settings.py?). In letzterem Fall wäre stderr oder stdout bevorzugt?

Die Frage könnte dahingehend erweitert werden, ob interaktive Eingaben von Benutzern zulässig sind. Eingebaute Schemamigration-Einrichtungen sind dazu in der Lage, interaktive datenbezogene Fragen zu stellen.

Custom management commands haben empfohlene Möglichkeiten zur Bereitstellung von Konsolen-Ausgabe, die Teil der Motivation hinter dieser Frage ist.

Antwort

1

Ich denke, log ist der Weg, hier zu gehen. Da Sie die Migrationen auf Ihrem Server ausführen möchten, sollten Sie sie lieber im Protokoll speichern, damit Sie sie später jederzeit abrufen können.

1

stderr sollte verwendet werden, wenn etwas funktionell bricht. IE, Theres ein tatsächlicher Fehler.

Sie sollten zu jeder anderen Zeit drucken.

Also, wenn Ihre Migrationen irgendwelche Fehler haben, würde ich diese auf stderr umleiten. Ansonsten denke ich, Marshall X hat richtig geantwortet. Wenn Sie auf alles zurückkommen müssen, was passiert ist und Sie den Druck verwendet haben, ist die Information einfach nicht da.

Ich würde Protokollierung verwenden.