import logging,time,os,sys
'''
使用方法:在project主目錄下新建lib目錄,將logger_fengzhuang.py文件複製進去
調用方式:
logger = Logger(file_or_terminal="file", level="DEBEG").getLogger()
# logger = Logger(file_or_terminal="terminal").getLogger()
# logger = Logger(file_or_terminal="all").getLogger()
logger.debug("debug")
logger.info("info")
logger.error("info")
# file_or_terminal == terminal: 只打印到命令行
# file_or_terminal == file: 只打印到日誌文件
# file_or_terminal == all: 同時打印到日誌文件和命令行
# level = CRITICAL','ERROR','WARNING','INFO','DEBUG
'''
class Logger():
def __init__(self, file_or_terminal="file", level="ERROR"):
self.logger = logging.getLogger()
self.logger.setLevel(level)
info = '''
file_or_terminal == terminal: 只打印到命令行
file_or_terminal == file: 只打印到日誌文件
file_or_terminal == all: 同時打印到日誌文件和命令行
level = CRITICAL','ERROR','WARNING','INFO','DEBUG
'''
proDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
resultPath = os.path.join(proDir, 'result')
result_Log_Path = os.path.join(resultPath, 'Log')
result_Html_Path = os.path.join(resultPath, 'HTML報告')
Log_month_Dir = os.path.join(result_Log_Path, time.strftime("%Y-%m"))
self.Log_day_log_Path = os.path.join(Log_month_Dir, time.strftime("%Y-%m-%d")+'.log')
# 創建result文件夾及裏面的日期時間文件夾、創建Log文件夾、創建"HTML報告"文件夾、當天日期命名的log文件夾(若不存在)
for i in [resultPath, result_Log_Path, result_Html_Path, Log_month_Dir]:
if not os.path.exists(i):
os.mkdir(i)
#
# print(info)
time.sleep(0.1)
self.file_or_terminal = file_or_terminal
def getLogger(self):
fm = logging.Formatter(fmt='%(asctime)s %(filename)s[%(lineno)d] %(levelname)s %(message)s %(module)s %(funcName)s', datefmt="%Y-%m-%d %X")
def only_file():
fh = logging.FileHandler(os.path.join(self.Log_day_log_Path))
fh.setFormatter(fm)
self.logger.addHandler(fh)
return self.logger
def only_terminal():
ch = logging.StreamHandler()
ch.setFormatter(fm)
self.logger.addHandler(ch)
return self.logger
def file_and_terminal():
only_file()
only_terminal()
return self.logger
choice_dict = {
"terminal": only_terminal,
"file": only_file,
"all": file_and_terminal,
}
if choice_dict.get(self.file_or_terminal):
return choice_dict.get(self.file_or_terminal)()
else:
return choice_dict.get("file")()
if __name__ == '__main__':
# logger = Logger().getLogger()
logger = Logger("all").getLogger()
# logger = Logger("terminal", "INFO").getLogger()
# logger = Logger("file", "DEBUG").getLogger()
logger.debug("debug")
logger.info("info")
logger.error("info")
python日誌模塊--封裝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.