日志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))

# 其他:获取本地主机的信息
# import socket
# name_str = socket.gethostname()
3. 采用东八区时间
# logtime格式:datetime.datetime(2020, 12, 3, 16, 12, 31, 380487)
# timetuple()转换后:time.struct_time(tm_year=2020, tm_mon=12, tm_mday=3, tm_hour=16,...)
# 转换后和time.localtime()的格式一致,Formatter中默认的converter就是time.localtime
def beijing_time(sec, what):
        logtime = datetime.utcnow() + timedelta(hours=8)    
        return logtime.timetuple()                          
logging.Formatter.converter = beijing_time

# 修改converter之后,正常设置logging.Formatter 
plain_formatter = logging.Formatter("[%(asctime)s] %(name)s %(levelname)s: %(message)s", datefmt="%m/%d %H:%M:%S")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值