當然,如果您只需要爲每個日誌消息加上時間戳前綴,那麼您只需爲格式化程序提供適當的格式字符串?如文中提到here。
更新: A LoggerAdapter
將更適合情境信息是適度長壽的情況。例如,在處理多個客戶端連接的網絡服務器應用程序中,連接細節(例如客戶端IP地址)可能是有用的上下文,所以當創建新的客戶端連接時,您將創建一個LoggerAdapter
實例。這聽起來不像你的模擬場景。另一方面,如果可以使用它來獲得模擬時間,例如可以使用另一方面,則可以使用A
A Filter
。
class SimulationFilter(logging.Filter):
def __init__(self, context):
"""
Set up with context passed in which allows access
to simulation times.
"""
self.context = context
def filter(self, record):
"Add sim_time field to record, formatted as you wish"
record.sim_time = '%s' % self.context.get_sim_time()
return True
在
Formatter
的格式字符串
,然後添加%(sim_time)s
。
或者,如果您知道模擬時間,無論何時進行日誌記錄調用,您都可以執行
logger.debug('Message with %s', arguments, extra={'sim_time': sim_time})
在
Formatter
的格式字符串
,並同樣具有%(sim_time)s
。
我更新了我的回答以迴應您的評論。 –