Cha*_*lie 4 python logging multithreading
有没有办法显示线程native_id:
本地ID
该线程的本机完整线程 ID。这是一个非负整数,如果线程尚未启动,则为 None。请参阅 get_native_id() 函数。这表示操作系统(内核)分配给线程的线程 ID (TID)。它的值可用于在系统范围内唯一标识该特定线程(直到线程终止,之后该值可由操作系统回收)。
在 python 日志中使用日志记录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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2458 次 |
| 最近记录: |