我有一个带有两个管理命令的 django 应用程序,它们都调用一个公共库。让我们称它们为sync_a 和sync_b。我希望日志条目记录调用函数(或模块),以便我知道日志消息是来自 sync_a 还是 sync_b
# sync_a.py
from utils.some_module import some_function
import logging
logger = logging.getLogger(__name__)
class Command(BaseCommand):
some_function('a')
# sync_b.py
from utils.some_module import some_function
import logging
logger = logging.getLogger(__name__)
class Command(BaseCommand):
some_function('a')
# some_module.py
def some_function(param):
logger.info("running")
我在 settings.py 中的日志记录设置是:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'formatters': {
'semi_verbose': {
'format': '[%(levelname)s] %(module)s %(name)s %(funcName)s(): %(message)s'
},
},
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
'formatter': 'semi_verbose'
}
},
'loggers': {
'app': {
'handlers': ['console'],
'level': 'debug',
'propagate': True
}
}
}
我看到的日志消息格式如下:
[INFO] utils.some_module some_function(): running
我希望它们包含sync_a 或sync_b。
我不确定我正在尝试做的事情是否不寻常,或者我是否错误地配置了一些东西。我知道我可以自定义 log.info() 行以使用参数或使用检查,但我试图找到一个不需要这样做的解决方案,因为我有几个管理命令和库喜欢它的工作。