我正在编写python包/模块,并希望日志消息提到它们来自哪个模块/类/函数.即如果我运行此代码:
import mymodule.utils.worker as worker w = worker.Worker() w.run()
我想记录消息如下:
2010-06-07 15:15:29 INFO mymodule.utils.worker.Worker.run <pid/threadid>: Hello from worker
我怎么能做到这一点?
谢谢.
我倾向于在我的包/模块中使用日志记录模块,如下所示:
import logging
log = logging.getLogger(__name__)
log.info("Whatever your info message.")
Run Code Online (Sandbox Code Playgroud)
这会将记录器的名称设置为模块的名称以包含在日志消息中.您可以通过%(name)s格式字符串中的位置控制名称的位置.类似地,您可以将pid %(process)d和线程ID 放在一起%(thread)d.有关所有选项,请参阅文档.
格式化示例:
import logging
logging.basicConfig(format="%(asctime)s %(levelname)s %(name)s %(process)d/%(threadName)s: %(message)s")
logging.getLogger('this.is.the.module').warning('Testing for SO')
Run Code Online (Sandbox Code Playgroud)
给我:
2010-06-07 08:43:10,494 WARNING this.is.the.module 14980/MainThread: Testing for SO
Run Code Online (Sandbox Code Playgroud)