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.
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.
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.
Tags und Links python django django-migrations