在日常深度学习中,经常会将日志信息打印在控制台,但是由于打印的信息太多或者终端关闭后就无法查看具体的日志信息,所以这里提供了一种使用logger将日志信息,既在程序运行时将日志信息打印在控制台,又将日志信息写入日志文件中,使用方法和print类似、简洁:
import logging import time def get_logger(dataset='LandSlide4Scene'): pathname = "./logs/{}_{}.txt".format(dataset, time.strftime("%m-%d_%H-%M-%S")) logger = logging.getLogger() logger.setLevel(logging.INFO) formatter = logging.Formatter("%(asctime)s - %(levelname)s: %(message)s", datefmt='%Y-%m-%d %H:%M:%S') file_handler = logging.FileHandler(pathname) file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) stream_handler = logging.StreamHandler() stream_handler.setLevel(logging.DEBUG) stream_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.addHandler(stream_handler) return logger logger = get_logger() # 使用info()函数,就类似于print()函数,既会将日志信息打印在控制台,又会输出在日志文件中,方便查看 logger.info(args)
arg不仅仅可以是字符串,还是可以类对象、列表、元组等,非常适合日志保存和打印的需求。
这里提供一个日志保存的示例,将日志保存在txt文件中,需要绘制曲线的话,可以按照日志文件进行索引编辑。