运行相同文件的多个实例,每个实例在Python中登录到不同的日志文件

时间:2017-08-10 23:53:07

标签: python multithreading python-2.7 python-multithreading

我有一个主python脚本,可以在我们实验室的分布式系统设置中自动配置节点。 我运行kickstart.py的多个实例,然后并行配置所有节点。如何创建日志处理程序,以便kickstart.py的每个实例分别并行配置每个节点,并且每个实例都登录到不同的日志文件。我想使用python日志模块。任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:0)

logging模块是线程安全的,非常容易使用。 阅读相关的documentation

这是一个简单的例子:

import logging
import threading
import time


def worker(arg):
    logger = logging.getLogger('simple_example')
    while not arg['stop']:
        logger.info('Hello from thread')
        time.sleep(0.5)


def main():
    logger = logging.getLogger('simple_example')
    logger.setLevel(logging.DEBUG)
    fh = logging.FileHandler('spam.log')
    fh.setLevel(logging.INFO)
    formatter = logging.Formatter('%(asctime)s - %(threadName)s - %(levelname)s - %(message)s')
    fh.setFormatter(formatter)
    logger.addHandler(fh)

    thread = threading.Thread(target=worker, args=(info,))
    thread.start()

    for x in range(3):
        logger.info('Hello from main')
        time.sleep(0.75)

    thread.join()

if __name__ == '__main__':
    main()

哪个会给你:

2017-08-11 11:00:53,568 - simple_example - INFO - Hello from main
2017-08-11 11:00:53,568 - simple_example - INFO - Hello from thread
2017-08-11 11:00:54,069 - simple_example - INFO - Hello from thread
2017-08-11 11:00:54,318 - simple_example - INFO - Hello from main
2017-08-11 11:00:55,068 - simple_example - INFO - Hello from main
相关问题