默认情况下,我可以在 LOGGING
中启用 settings.py 登录。通过创建记录器进行配置""
这将捕获所有日志。但是,如果我只想查看我的项目应用程序的日志记录而不是 Django 内部的呢?
我可以想象在我的每个 Django 应用程序模块中显式获取一个记录器并通过某种约定命名它,例如logging.getLogger("myproject." + __file__)
.然后我可以创建一个名为“myproject”的记录器(在 SETTINGS 中),它会收集所有这些以输出。我不想硬编码我的项目名称,所以我会在 ___file___
上做一些 os.path 逻辑以任意深度将完整的命名空间提取到文件中。
在这一点上,我停下来想知道有没有更简单的方法?
最佳答案
您可以使用如下方案为所有本地应用程序创建相同的记录器,而无需手动将它们全部添加到日志记录配置中。
首先,拆分您的本地应用程序:
LOCAL_APPS = [
'myapp1',
'myapp2',
...
]
THIRD_PARTY_APPS = [
'django. ...',
...
]
INSTALLED_APPS = LOCAL_APPS + THIRD_PARTY_APPS
接下来为您的本地应用程序创建记录器配置:
local_logger_conf = {
'handlers': ['my_handler',],
'level': 'DEBUG',
}
最后,按如下方式定义您的记录器:
'loggers': { app: copy.deepcopy(local_logger_conf) for app in LOCAL_APPS }
关于Django:仅记录我项目的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16876045/