2016-05-05 21 views
8

Szukałem żadnych wytycznych w tej sprawie, ale bez powodzenia. W projekcie często używam Django data migrations. Wyglądają bardziej lub mniej jak przykład z dokumentów. Jednak operacje są czasami dość skomplikowane i byłoby miło mieć trochę wyników konsolowych podsumowujących wykonywane operacje (tj. Co usunięto/utworzono/zmieniono/itp. I dlaczego).Czy można drukować na stdout lub stderr w migracjach danych Django? Jeśli tak to jak?

Pytanie brzmi: czy można zakodować takie logowanie w migracji? Jeśli tak, czy lepiej jest użyć modułu Pythona logging lub po prostu print? W pierwszym przypadku prawdopodobnie wymagana byłaby dodatkowa konfiguracja, aby te dzienniki były widoczne (w settings.py?). W tym drugim przypadku, preferowany byłby stderr lub stdout?

Pytanie może zostać rozszerzone na pytanie, czy interaktywne dane wejściowe od użytkownika są dopuszczalne. Wbudowane mechanizmy migracji schematów mogą zadawać interaktywne pytania dotyczące danych.

Custom management commands mają zalecane sposoby dostarczania wyjścia konsoli, co jest częścią motywacji kryjącej się za tym pytaniem.

Odpowiedz

1

Myślę, że log to sposób, aby przejść tutaj. Ponieważ masz zamiar uruchamiać migracje na swoim serwerze, lepiej zapisać je w dzienniku, aby móc je później przechwycić.

1

stderr należy używać, gdy coś funkcjonalnie się zepsuje. IE, jest faktyczny błąd.

Powinieneś drukować na stdout w dowolnym innym momencie.

Jeśli Twoje migracje powodują jakiekolwiek błędy, przekierowuję je na stderr. Poza tym uważam, że Marshall X odpowiedział poprawnie. Jeśli chcesz odnieść się do wszystkiego, co się wydarzyło i użyłeś druku, to po prostu nie ma tam informacji.

Użyłbym logowania.

Powiązane problemy