在日志格式化程序Django Python中添加动态自定义变量

2024-09-28 17:22:07 发布

您现在位置:Python中文网/ 问答频道 /正文

让以下内容成为设置.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我有个装修工

^{pr2}$

在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'
    },
},

每当logger被触发时,它应该从decorator获取相应的ID,并将其登录到%(unique_ID)s中,或者默认情况下它应该记录


Tags: pydebugimportidmessageverbosehandlersdef