在python日志中显示线程native_id



有没有一种方法可以显示线程native_id:

native_id

此线程的本机整数线程ID。这是一个非负整数,或者如果线程尚未启动,则无。看见get_native_id((函数。这将线程ID(TID(表示为由OS(内核(分配给线程。其值可用于在系统范围内唯一标识此特定线程(直到线程终止,之后该值可以由OS回收(。

在python日志中使用logging LogRecord属性。

%(threadName(s和%(thread(s不显示native_id。

我使用的是linux Ubuntu和RHEL。

感谢

您可以添加一个过滤函数,该函数拦截日志消息并将线程id添加到中

In [1]: import threading
In [2]: def thread_id_filter(record):
...:     """Inject thread_id to log records"""
...:     record.thread_id = threading.get_native_id()
...:     return record
...:
In [3]: import logging
In [4]: my_logger = logging.getLogger()
In [5]: handler = logging.StreamHandler()
# changed formatting character from `s` to `d` for thread_id
In [6]: handler.setFormatter(logging.Formatter('%(asctime)s | %(levelname)s | %(thread_id)d | %(message)s'))
In [7]: handler.addFilter(thread_id_filter)
In [8]: my_logger.addHandler(handler)
In [9]: my_logger.setLevel('INFO')
In [10]: my_logger.info('test123')
2021-06-15 18:33:20,400 | INFO | 6795172 | test123

最新更新