我正在尝试使用 Python logging 模块为 Django 应用程序配置日志记录。我在我的 Django 项目的 settings.py 文件中放置了以下配置代码:
import logging
import logging.handlers
import os
date_fmt = '%m/%d/%Y %H:%M:%S'
log_formatter = logging.Formatter(u'[%(asctime)s] %(levelname)-7s: %(message)s (%(filename)s:%(lineno)d)', datefmt=date_fmt)
log_dir = os.path.join(PROJECT_DIR, "var", "log", "my_app")
log_name = os.path.join(log_dir, "nyrb.log")
bytes = 1024 * 1024 # 1 MB
if not os.path.exists(log_dir):
os.makedirs(log_dir)
handler = logging.handlers.RotatingFileHandler(log_name, maxBytes=bytes, backupCount=7)
handler.setFormatter(log_formatter)
handler.setLevel(logging.DEBUG)
logging.getLogger().setLevel(logging.DEBUG)
logging.getLogger().addHandler(handler)
logging.getLogger(__name__).info("Initialized logging subsystem")
在启动时,我在日志文件中收到一些与 Django 相关的消息,以及“已初始化的日志子系统”,但是所有日志消息最终都转到了 Web 服务器日志 (/var/log/apache2/error.log,因为我使用的是 Apache),并使用标准日志格式(不是我指定的格式化程序)。我是否错误地配置了日志记录?
请您参考如下方法:
有点虎头蛇尾,但事实证明项目中安装了一个第三方应用程序,它有自己的日志记录配置,覆盖了我设置的配置(它修改了根记录器,出于某种原因——对于 Django 应用程序来说不是很符合标准!)。删除了该代码,一切都按预期工作。
