如何从一个同时执行的2个脚本中的一个文件中登录一个文件



我是Python的新手。我有一个具有许多功能的脚本。因此,完成大约10秒钟的时间。为了提高速度,我将一个脚本分为两个(所以现在我有两个具有独立函数的脚本)独立脚本。我正在从另一个脚本中导入一个脚本。因此它可以同时工作。但是,这样做的行为完全改变了。它假设在新日志文件中创建和写作(每次我运行脚本时)。但是现在它也在以前的日志文件中写作。

所以我的猜测是我的记录器配置在两个脚本中都无法正常工作。由于该线程也很慢。任何人都可以查看我的代码并帮助我找到其中的错误吗?

script_1.py
script_path = os.path.dirname(os.path.realpath(sys.argv[0]))        
dat = str(datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S'))
logger = logging.getLogger("main_script")
logger.setLevel(logging.INFO)
fh = logging.FileHandler(script_path + '\..\main_script_' + dat".log") 
logger_file_path = script_path + '\..\main_script_' + dat + ".log"
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
def CloseLogger():
    """CloseLogger function closes the logger """    
    handler = logger.handlers[:]   
    for i in handler:
        i.flush()
        i.close()
        logger.removeHandler(i)
#other independent functions
if__name__== "__main__":
    main_1()
script_2.py
from threading import Thread
from script_1 import *
run_script1 = Thread(target = main_1)
run_script1.start()
logger = logging.getLogger('main_script.script_2') # second part of original script

#other independent functions
if__name__== "__main__":
    run_script2 = Thread(target = main_2)
    run_script2.start()
    run_script2.join()
    run_script2.join()

我认为我要么在线程中犯错,要么在logger配置中犯了错误。请帮助我找到自己的错误。如果您需要更多信息,请告诉我。谢谢你

在此处输入图像描述

我想我发现了原因。我必须正确关闭记录仪。因此,我关闭记录器的代码是...

handlers = logger.handlers[:] #close logger
for handler in handlers:
    handler.flush()
    handler.close()
    logger.removeHandler(handler) # was not removing handler
logging.shutdown()

如果我错了,请纠正我。谢谢@treyten Carey

相关内容

最新更新