在python中如何将1生成001_python面试题001-写一个基本日志类,同时将日志显示在控制台和写入文件中,并按照天为周期切分为日志文件...

本文主要内容:创建一个基本日志类,实现将日志同时输出到控制台与写入文件的功能

创建一个Student类,score属性只能为整数。实例化Student类,给score赋不同的值,从而验证基本日志类的功能

创建基本日志类:import logging

from logging import handlers

FORMAT = '%(acstime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s - %(message)s'

# 设置日志格式

class Logger(object):

# 日志级别关系映射

kv = {

'debug': logging.DEBUG,

'info': logging.INFO,

'warning': logging.WARNING,

'error': logging.ERROR,

'crit': logging.CRITICAL

}

def __init(self, filename, level='info', when='D', backcount=3, fmt=FORMAT):

"""

:param filename: 写入日志的文件名

:param level: 日志级别

:param when: 日志切分周期

:param backcount: 每完成一个周期的日志写入文件,最多保留的 日志文件数,旧的日志文件将被删除

:param fmt: 日志格式

"""

self.logger = logging.getLogger(filename)

fmt_str = logging.Formatter(fmt) # 日志格式

self.logger.setLevel(self.kv.get(level)) # 日志级别

sh = logging.StreamHandler() # 输出到控制台

sh.setFormatter(fmt_str) # 日志在控制台的输出格式

th = handlers.TimedRotatingFileHandler(filename, when=when, backupCount=backupcount, encoding='utf-8')

th.setFormatter(fmt_str)

self.logger.addHandler(sh)

self.logger.addHandler(th)

创建log对象,日志级别为'DEBUG'及以上的写入日志文件:log = Logger(filename='all.log', level='debug').logger

创建Student类,属性score只能为整数类型:class Student(object):

def __init__(self, name, id):

self.name = name

self.id = id

log.info(f'{student name:{name}, id:{id}}')

@property

def score(self):

return self.__score

@score.setter

def score(self, score):

if isinstance(score, int):

self.__score = score

log.info(f'{student {name} got {self.score}}')

else:

log.error(f'学生分数类型错误,应该为整型!')

raise TypeError(f'学生分数类型错误,应该为整型!')

实例化Student类:xiaoming = Student(10086, 'xiaoming')

xiaoming.score = 90

xiaohong = Student(10010, 'xiaohong')

xiaohong.score = 90.6

整理自网络,侵删。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值