我正在尝试首次实现日志记录,但遇到了问题。 我有一个设置,我在文件中调用其他文件。我试图从每个点登录一个文件。
由于某种原因,被调用文件没有记录任何内容,因为当我打开日志文件(' 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()
答案 0 :(得分:2)
好吧,os.system
将在另一个进程中运行您的脚本,并且日志记录模块无法跨进程通信以整合您的日志记录信息。 file_1.py的日志记录将写入该进程的stdout。据我所知,os.system在调用后不会使进程输出可用,因此您将无法查看或输出这些日志行。