gpt4 book ai didi

python - 我可以在记录时设置为 gevent greenlet 显示的自定义名称吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:20:13 24 4
gpt4 key购买 nike

当我使用标准的 logging 包从 greenlets 中打印出日志语句时,我得到的文本如下所示:

2014-02-06 22:38:43,428 [INFO] (11396-Dummy-2) event_listener: About to block

我指的是 11396-Dummy-2 部分。例如,我希望它改为说“Main”或“Listener 1”之类的话。这可能吗?从当前的文档中,我没有看到任何 API 可以这样做。

最佳答案

我不确定您日志中的 11396-Dummy-2 部分来自哪里,但是如果您想向日志中添加上下文信息(例如 greenlet 标识符),那么是a number of documented ways这样做。这是一个使用 LoggerAdapter 的示例:

import logging
import gevent

class Adapter(logging.LoggerAdapter):
def process(self, msg, kwargs):
msg = '(%s) %s' % (gevent.getcurrent()._run.__name__, msg)
return msg, kwargs

logger = Adapter(logging.getLogger(), {})

def foo():
logger.debug('Running in foo')
gevent.sleep(0)
logger.debug('Explicit context switch to foo again')

def bar():
logger.debug('Explicit context to bar')
gevent.sleep(0)
logger.debug('Implicit context switch back to bar')

logging.basicConfig(level=logging.DEBUG,
format='%(levelname)s %(threadName)s %(message)s')
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])

运行时,应该打印

DEBUG MainThread (foo) Running in foo
DEBUG MainThread (bar) Explicit context to bar
DEBUG MainThread (foo) Explicit context switch to foo again
DEBUG MainThread (bar) Implicit context switch back to bar

关于python - 我可以在记录时设置为 gevent greenlet 显示的自定义名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21621063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com