django - Django - 我如何确定 django 正在记录什么模块?
问题描述
我想为所有 django 模块添加一个全局自定义格式化程序,以便我可以使用 Elasticsearch 摄取一致的日志文件。我如何弄清楚哪些 django 模块正在记录什么,以便我可以更改它们的所有格式化程序?
这是我的日志配置settings.py
。使用 django 2.0。
# NOTE: Copied from DEFAULT_LOGGING and added custom format
# from django.utils.log import DEFAULT_LOGGING
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'},
'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue'}},
'formatters': {
'django.server': {
'()': 'django.utils.log.ServerFormatter',
'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(module)s %(message)s',
'datefmt': '%Y-%m-%d %H:%M:%S'}},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'filters': ['require_debug_true'],
'level': 'INFO'},
'django.server': {
'class': 'logging.StreamHandler',
'formatter': 'django.server',
'level': 'INFO'},
'mail_admins': {
'class': 'django.utils.log.AdminEmailHandler',
'filters': ['require_debug_false'],
'level': 'ERROR'}},
'loggers': {
'api': {
'handlers': ['django.server'],
'level': 'INFO',
'propagate': False},
'django': {
'handlers': ['django.server', 'mail_admins'],
'level': 'INFO'},
'django.server': {
'handlers': ['django.server'],
'level': 'INFO',
'propagate': False}},
}
解决方案
在格式化字符串中添加您的唯一标签,然后在您的 ELK 中搜索此关键字。
喜欢 :
%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] MYMODULE [%(module)s ] %(message)s'
在上述情况下,我将在日志中搜索 MYMODULE 标签。
推荐阅读
- c# - File.Replace 不适用于共享驱动程序?
- javascript - 使用 Sinon 存根 pg-promise
- xcode - Xcode:签署“gRPC-C++-gRPCCertificates-Cpp”需要开发团队
- python - 如何矢量化外积
- android - 如何使后退按钮关闭在android上颤动的WebView插件应用程序
- charts - Google Charts API:直方图,如何融合条形并将 x-ticks 更改为整数
- php - Laravel,如何更新用户个人资料并检查电话号码是否重复
- reactjs - Material UI KeyboardDatePicker 中的覆盖格式
- c++ - C ++中的文件输入/输出(使用类)
- css - react-gesture-gallery 将图像设置为全屏宽度