logging 在配置文件中我需要每个地方当我输出日志的都是,都自动带有日志所在的函数全路径,包含函数名

如果你想要在日志中包含函数的全路径,包括函数名,你可以在日志记录时使用 __name____qualname__ 属性,这些属性包含了函数所在的模块和完整的类/函数路径。

以下是一个简单的例子,演示了如何在配置文件中设置:

import logging.config

LOGGING_CONFIG = {
    'version': 1,
    'formatters': {
        'detailed': {
            'class': 'logging.Formatter',
            'format': '%(asctime)s [%(levelname)s] %(name)s.%(funcName)s:%(lineno)d - %(message)s',
        },
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'level': 'DEBUG',
            'formatter': 'detailed',
        },
    },
    'root': {
        'handlers': ['console'],
        'level': 'DEBUG',
    },
}

logging.config.dictConfig(LOGGING_CONFIG)

def my_function():
    logging.getLogger(__name__).info("This log message includes function path.")

if __name__ == '__main__':
    my_function()

在这个例子中,LOGGING_CONFIG 字典包含了一个简单的配置,其中包括了一个自定义的格式化器 'detailed',它使用了 %(name)s%(funcName)s%(lineno)d 等占位符。这些占位符会被替换为相应的日志记录信息。在 my_function 函数中,通过 logging.getLogger(__name__) 获取 logger,并记录了一条包含函数路径的日志。

你可以根据实际需求调整日志配置和格式化器,以满足你的需求。

如果你的 Python 版本较新,通常会使用 dictConfig 来配置日志,而不再使用 fileConfig。我之前提到的 LOGGING_CONFIG 是一个字典配置,你可以通过 dictConfig 函数将其应用到 logging 模块。

以下是一个更详细的例子:

import logging.config

LOGGING_CONFIG = {
    'version': 1,
    'formatters': {
        'detailed': {
            'class': 'logging.Formatter',
            'format': '%(asctime)s [%(levelname)s] %(name)s.%(funcName)s:%(lineno)d - %(message)s',
        },
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'level': 'DEBUG',
            'formatter': 'detailed',
        },
    },
    'root': {
        'handlers': ['console'],
        'level': 'DEBUG',
    },
}

logging.config.dictConfig(LOGGING_CONFIG)

def my_function():
    logging.getLogger(__name__).info("This log message includes function path.")

if __name__ == '__main__':
    my_function()

在这个例子中,LOGGING_CONFIG 是一个包含日志配置的字典。通过 dictConfig 函数将这个配置应用到 logging 模块。这样,在 my_function 函数中的日志记录就会包含函数的全路径信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值