擅长:python、mysql、java
<p>请允许我回答我自己的问题。这里的根本问题是settings.py被导入两次,甚至更多(请参见<a href="http://www.mail-archive.com/django-users@googlegroups.com/msg39059.html" rel="noreferrer">here</a>)。(我还是不明白这是为什么。或许某位Django专家可以向我解释这一点。)这似乎也适用于其他一些模块。在这一点上,我不认为假设settings.py将被导入多少次是明智的。就这一点而言,一般来说,这样的假设是不安全的。我在settings.py以外的地方编写了这段代码,结果类似。</p>
<p>你必须在这附近编码。也就是说,在向日志添加其他处理程序之前,必须检查日志记录程序中是否存在现有处理程序。这有点难看,因为将多个处理程序(甚至是同一类型的处理程序)附加到一个记录器上是完全合理的。有一些解决办法。一个是检查logger对象的handlers属性。如果只需要一个处理程序和长度>;0,则不要添加它。就我个人而言,我不喜欢这个解决方案,因为它会被更多的处理程序弄得一团糟。</p>
<p>我更喜欢这样的东西(多亏了托马斯·盖特勒):</p>
<pre><code># file logconfig.py
if not hasattr(logging, "set_up_done"):
logging.set_up_done=False
def set_up(myhome):
if logging.set_up_done:
return
# set up your logging here
# ...
logging.set_up_done=True
</code></pre>
<p>我必须说,我希望Django imports settings.py多次被更好地记录下来。我可以想象我的配置会以某种方式导致这个多重导入,但是我很难找出导致这个问题的原因和原因。也许我只是在他们的文档中找不到,但我认为这是你需要提醒用户的事情。</p>