让以下成为 settings.py 中的日志格式化程序`
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %thread)d %(message)s'
},
},
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
},
},
'loggers': {
'django': {
'handlers': ['console'],
'propagate': True,
},
'myproject.custom': {
'handlers': ['console'],
'level': 'INFO',
'propagate': False,
}
}
}
现在说我有三个文件,即 A.py、B.py 和 C.py
在 A.py 我有一个装饰器
def myDecorator():
#Code to generate unique Id for each request in Django APP
uniqueId = #something
在 B.py & C.py 我有很多功能来处理各种请求
import A.py import myDecorator
import logging
@myDecorator
def func1():
#Some Code
logger.debug("Logger message")
@myDecorator
def func2():
#Some Code
logger.info("Logger message")
@myDecorator
def func3():
#Some Code
logger.debug("Logger message")
def func4():
#May be Some functions without logger too !!!!
logger.debug("Logger message")
现在我想将生成的唯一 ID 与记录器消息一起记录下来,而不是每次都在记录器中显式传递,我还想让它成为通用的!
有什么方法我可以将这些唯一的 ID 传递给记录器而不显式传递它。
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d
%thread)d %(message)s''%(unique_id)s'
},
},
每当记录器被触发时,它应该从装饰器获取其相应的 ID 并将其记录在%(unique_id)s中,或者默认情况下它应该记录None