Ist es OK, in Django-Datenmigrationen nach stdout oder stderr zu drucken? Wenn das so ist, wie?

8

Ich habe nach irgendwelchen Richtlinien gesucht, aber ohne Erfolg. In einem Projekt verwende ich Django-Daten Migrationen ziemlich oft. 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 verkabelt wurde / usw. und warum).

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 geeignet, interaktive datenbezogene Fragen zu stellen.

Benutzerdefinierte Verwaltungsbefehle haben empfohlene Möglichkeiten zur Bereitstellung der Konsolenausgabe, die Teil der Motivation hinter dieser Frage ist.

    
Piotr Ćwiek 05.05.2016, 15:40
quelle

2 Antworten

1

Ich denke, log ist der Weg, hier zu gehen. Da Sie die Migrationen auf Ihrem Server ausführen, ist es besser, sie als Protokoll zu speichern, damit Sie sie später wiederfinden können.

    
Marshall X 15.05.2017 19:07
quelle
1

stderr sollte verwendet werden, wenn etwas funktionell bricht. IE, es gibt einen tatsächlichen Fehler.

Sie sollten zu jeder anderen Zeit drucken.

Wenn also Ihre Migrationen Fehler aufweisen, würde ich diese zu stderr umleiten. Ansonsten denke ich, Marshall X hat richtig geantwortet. Wenn Sie auf alles zurückkommen müssen, was passiert ist und Sie gedruckt haben, ist die Information einfach nicht da.

Ich würde Protokollierung verwenden.

    
Christian Brintnall 28.06.2017 19:47
quelle