如何根据调用哪个python进程日志记录来记录不同的文件?

时间:2016-09-02 22:49:42

标签: python logging python-multiprocessing

我正在研究测试框架。每个测试都是作为一个新的python多处理过程启动的。 每个测试都有一个主日志文件和单独的日志文件。 在框架代码的启动时创建了一个主记录器,并在每个测试过程中创建了一个新的记录器。测试记录器记录到它们 - 它自己的日志文件和主日志文件。

任何测试都可以使用多个库 目前在库函数中没有完成日志记录。为了将日志记录添加到库函数,需要将logger对象作为参数传递给此库函数。为此,必须修改库模块和函数调用中的每个函数签名,这是不切实际的。

据我所知,我不能拥有模块级记录器,因为模块级记录器将记录每个模块的不同文件,而不是每个测试过程。

你能否提出一个解决方案,我不必在函数周围传递日志对象,而日志语句会根据调用函数的进程登录到正确的文件?

1 个答案:

答案 0 :(得分:0)

threading模块有一个get_ident成员,可用于索引某些记录器字典,例如;

from threading import get_ident

loggers[get_ident()].logError('blah blah blah')

但是,一旦您在整个库中进行了所有这些测试记录,这将如何影响您的生产性能?