【问题标题】:Custom format for logger arguments before merging them to the main logger message在将它们合并到主记录器消息之前记录器参数的自定义格式
【发布时间】:2021-03-07 03:11:54
【问题描述】:

logging 模块是维护干净的程序记录器的一种巧妙方法,具有可自定义的内容,例如消息格式。还有一点我不清楚:如何为传递给 Logger 类方法(例如logger.infologger.debug)之前它们被合并到msg格式字符串中?。

例如,考虑以下简单情况:

import logging

from termcolor import colored

# regular logging
logging.basicConfig(level="INFO", format="%(levelname)s\t%(message)s")
logging.info("Hello, %s", "world")

# same with explicitely using bold format for the argument
logging.info("Hello, %s", colored("world", attrs=["bold"]))

导致以下输出:

INFO    Hello, world!
INFO    Hello, world!

有没有一种方法可以为传递给记录器方法的每个附加参数的所有格式指定一次,而无需手动更改每个日志记录?

【问题讨论】:

标签: python logging


【解决方案1】:

这个section 有一个很好的例子来使用logging.Formatter()

import logging    
from termcolor import colored

new_format = logging.Formatter('%(levelname)s\t' + colored('%(message)s', attrs=['bold']))

handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
handler.setFormatter(new_format)

logger = logging.getLogger('')
logger.setLevel(logging.INFO)
logger.addHandler(handler)

logger.info('Hello world!')

编辑

意识到这也有效

import logging
from termcolor import colored

logging.basicConfig(format='%(levelname)s:\t' + colored('%(message)s', attrs=['bold']), level=logging.INFO)
logging.info('Hello World!')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2015-02-13
    • 2018-12-08
    相关资源
    最近更新 更多