Django:仅记录我项目的应用程序

标签 django logging

默认情况下,我可以在 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/

相关文章:

c# - 记录应用程序 block - 无法写入 Windows 事件日志

c++ - 记录极少量数据的最有效方法是什么?

python - 如何以编程方式更改 django 中用户的用户名和密码?

python - 如何使用 sqlite 在 pytest 中启用外键检查

python - 过滤 Django 查询集的字典值

react-native - React Native 中客户端日志记录和错误处理的最佳实践

java - Maven 存储库记录器冲突

logging - 如何使用nlog写入关键级别的事件日志?

python - 如何在一个查询中两次使用反向外键关系

python - Django 中的长轮询