Python:从多个文件中记录

时间:2015-09-01 23:22:06

标签: python logging

我正在尝试首次实现日志记录,但遇到了问题。 我有一个设置,我在文件中调用其他文件。我试图从每个点登录一个文件。

由于某种原因,被调用文件没有记录任何内容,因为当我打开日志文件(' snake.log')时,我看到的只有:

2015-09-01 14:55:40,598 - test_logging - INFO - Program started
2015-09-01 14:55:40,598 - test_logging - INFO - Done!

我的代码在这里:

#main.py
--------
from datetime import datetime
from datetime import timedelta
import sys
import os
import logging

def main():

    logger = logging.getLogger("test_logging")
    logger.setLevel(logging.INFO)

    fh = logging.FileHandler("snake.log")
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    fh.setFormatter(formatter)
    logger.addHandler(fh)
    logger.info("Program started")

    script_dir = os.path.dirname(os.path.realpath(__file__)) 

    # list of scripts to be executed
    metric_scripts = [
                       'file_1.py'
                      #,'file_2.py'
                      #,'file_3.py'
                     ]

    index_date = (datetime.now() - timedelta(days=1)).strftime("%Y.%m.%d")

    for script_name in metric_scripts:
        run_path = script_dir + '/' + script_name
        cmd = "python " + run_path + " " + index_date
        os.system(cmd)

    logger.info("Done!")

if __name__ == "__main__":
    main()



#file_1.py
-------------
from datetime import datetime, timedelta
import time
import logging

logger = logging.getLogger("test_logging")
logger.info("Pulling data ...")

def main():

  process_date = str(sys.argv[1])

  print "Doing someting here ..."

if __name__ == "__main__":
    main()

1 个答案:

答案 0 :(得分:2)

好吧,os.system将在另一个进程中运行您的脚本,并且日志记录模块无法跨进程通信以整合您的日志记录信息。 file_1.py的日志记录将写入该进程的stdout。据我所知,os.system在调用后不会使进程输出可用,因此您将无法查看或输出这些日志行。