将字符串添加到线程名称的末尾

时间:2018-10-30 17:09:36

标签: python python-3.x python-multithreading

我正在使用日志记录模块打印一些数据。这是我的代码:

logging.basicConfig(
    format="%(asctime)s [%(threadName)s] [%(levelname)s]  %(message)s",
    level=logging.INFO,
    handlers=[
        logging.FileHandler("{0}/{1}.log".format(logPath, fileName)),
        logging.StreamHandler(sys.stdout)
    ]
)

我想像这样在线程名的末尾添加一些数据:

2018-10-30 19:43:54,304 [Thread-2 %SOME INFO%] [WARNING] Foo bar baz

我该怎么做?

1 个答案:

答案 0 :(得分:1)

Logger类的“ log”方法(调试,信息,警告等)可以带有一个extra参数,该参数是可以用作自定义属性的字典。 documentation说:

  

第二个关键字参数为extra,可用于传递   用于填充LogRecord的__dict__的字典   为具有用户定义属性的日志记录事件创建的。这些   然后可以根据需要使用自定义属性。例如,他们   可以并入已记录的消息中。

在您的示例中,我们必须在format属性中添加新信息:

logging.basicConfig(
    format="%(asctime)s [%(threadName)s %(threadInfo)s] [%(levelname)s]  %(message)s",
    level=logging.INFO,
    handlers=[
        logging.FileHandler("{0}/{1}.log".format(logPath, fileName)),
        logging.StreamHandler(sys.stdout)
    ]
)

我们可以这样调用一个日志方法:

logging.info("Foo bar baz", extra={'threadInfo': 'SOME INFO'})