在Django数据迁移中打印到stdout或stderr是否可以?如果是这样,怎么样?

时间:2016-05-05 15:40:43

标签: python django django-migrations

我一直在寻找任何指导方针但没有成功。在一个项目中,我经常使用Django data migrations。它们看起来或多或少像文档中的示例。然而,操作有时相当复杂,并且有一些控制台输出总结执行的操作(即删除/创建/重新连接等等以及为什么这样做)会很好。

所以问题是:将这样的日志记录编码到迁移中是否可以?如果是这样,使用Python的logging模块或仅print是否更好?在前一种情况下,可能需要一个额外的配置来使这些日志可见(在settings.py?)。在后一种情况下,会stderr还是stdout

问题可以扩展到用户的互动输入是否是允许的。内置的模式迁移工具很容易询问与数据相关的交互问题。

Custom management commands推荐了提供控制台输出的方法,这是此问题背后的动机之一。

2 个答案:

答案 0 :(得分:3)

我认为日志是这里的方式。由于您要在服务器上运行迁移,因此最好将其保存到日志中,以便以后随时可以捕获它。

答案 1 :(得分:3)

当某些功能中断时,应该使用stderr。 IE,这是一个实际的错误。

你应该在任何其他时间打印到stdout。

因此,如果您的迁移有任何错误,我会将其重定向到stderr。其他明智的我认为马歇尔X正确回答。如果您需要回顾发生的任何事情并使用了印刷品,那么信息就不存在了。

我会使用日志记录。