我有一个名为data.py的主脚本,它将调用logger.py
(用于日志(log)配置)和login.py
(用于登录)
# data.py
from logger import configure_logger
from login import *
if __name__ == "__main__":
script_name = (f"C:\\datalog") #save logfile in a different directory than script location
logger = configure_logger(script_name)
logger.info(f"This log is from data.py")
# logger.py
import logging
from datetime import datetime as dt
def configure_logger(script_name):
py_name = ((__file__.split('\\')[-1]).split('.')[0]).upper()
log_format = f'%(asctime)s - %(levelname)s - {py_name} - %(message)s'
logging.basicConfig(filename=f"{script_name}_{dt.now().strftime('%Y%m%d-%H_%M_%S')}.log", level=logging.INFO, format=log_format)
logger = logging.getLogger()
return logger
# login.py
from logger import configure_logger
import os
import sys
script_name = os.path.splitext(os.path.basename(sys.argv[0]))[0]
logger = configure_logger(script_name)
logger.info(f"This log is from login.py")
我在datalog_<date_timestamp>.log
年的预期yields :
2023-09-28 14:20:27,767 - INFO - LOGIN - This log is from login.py
2023-09-28 14:20:27,768 - INFO - DATA - This log is from data.py
BU以上脚本生成如下所示的输出到data_<date_timestamp>.log
:(日志(log)文件中不需要文件名和名称)
2023-09-28 14:20:27,767 - INFO - LOGGER - This log is from login.py
2023-09-28 14:20:27,768 - INFO - LOGGER - This log is from data.py
我的登录和记录器模块是常见的,它将从多个主脚本调用,如data.py.
我需要根据我的主脚本中提到的名称(在本例中是-data.py)创建日志(log)文件,并且对于每个日志(log)条目,我希望包括执行它的原始脚本的名称.例如,如果运行的是login.py
,我需要包括LOGIN
作为名称,如果运行的是data.py
,则必须是DATA
我怎样才能做到这一点呢?