日誌輸出及文檔保存--logger

1. 將日誌信息打印到屏幕

import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)

logging.info('use cpu')
logging.info('gpu num: %d', len(ctx))

2. 將日誌信息打印到屏幕,並寫入文檔保存

class Logger(object):   

    level_relations = {
        'debug':logging.DEBUG,
        'info':logging.INFO,
        'warning':logging.WARNING,
        'error':logging.ERROR,
        'crit':logging.CRITICAL
    }       # 日誌級別關係映射
    
    def __init__(self, filename, level='info',
        fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):
        self.logger = logging.getLogger()
        self.logger.setLevel(self.level_relations.get(level))  # 設置日誌級別
        format_str = logging.Formatter(fmt)                    # 設置日誌格式
        sh = logging.StreamHandler()                           # 創建一個handler,用於輸出到控制檯
        fh = logging.FileHandler(filename=filename)            # 創建一個handler,用於寫入日誌文件
        # sh.setLevel(logging.INFO)
        # fh.setLevel(logging.INFO)
        # sh.setFormatter(format_str)                          # 設置屏幕上顯示的格式
        # fh.setFormatter(format_str)                          # 設置文件裏寫入的格式
        self.logger.addHandler(sh)                             # 把對象加到logger裏
        self.logger.addHandler(fh)

timestr = datetime.datetime.now().strftime("%Y-%m-%d_%H_%M_%S")
logfilename = '%s_%s_%s_%s.log' % (args.network, args.dataset, args.loss, timestr)
dir_name = './training_log'
if not os.path.exists(dir_name):
    os.mkdir(dir_name)	 									   # os.makedirs()
logfilepath = os.path.join(dir_name, logfilename)
Logger(filename=logfilepath)

logging.info('=' * 60)
logging.info('image_size %s', str(image_size))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章