Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从多个文件进行日志记录_Python_Logging - Fatal编程技术网

Python:从多个文件进行日志记录

Python:从多个文件进行日志记录,python,logging,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

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

出于某种原因,被调用的文件没有记录任何内容,因为当我打开日志文件('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()

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

不要说“调用文件”,而是说“运行脚本”。另外,为什么要调用其他python脚本而不是导入?我可以将其作为:file_1.main()运行吗?你能举个例子吗?