【专题】python自定义封装logging_python loggeer自定义(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

class CustomLogging(object):
def __init__(self, name):
self.logger = logging.getLogger(name)
self.logger.parent.setLevel(logging.DEBUG)
self.logger.root.setLevel(logging.DEBUG)
# log存放的目录
self.log_path = os.path.join(
os.getcwd(), “log”, datetime.now().strftime(“%Y-%m-%d”))
# log格式化输出
self.log_formatter = logging.Formatter(
‘%(asctime)s-%(levelname)s : %(message)s’, ‘%Y-%m-%d %H:%M:%S’)
# 控制台输出
self.set_console_logger()
# 文件输出日志
self.set_file_logger()

def set\_console\_logger(self):
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.DEBUG)
    console_handler.setFormatter(self.log_formatter)
    self.logger.addHandler(console_handler)

def set\_file\_logger(self):
    log_message_path = os.path.join(self.log_path, "message")
    log_error_path = os.path.join(self.log_path, "error")
    if not os.path.exists(log_message_path):
        os.makedirs(log_message_path)
    if not os.path.exists(log_error_path):
        os.makedirs(log_error_path)
        
    messageHandle = handlers.RotatingFileHandler(os.path.join(log_message_path, "access.log"),
                                                 maxBytes=1024\*1024\*30, backupCount=50, encoding="utf-8", delay=False)
    messageHandle.setLevel(logging.INFO)
    # messageHandle.addFilter(logFilter(logging.INFO))
    messageHandle.setFormatter(self.log_formatter)
    self.logger.addHandler(messageHandle)

    errorHandle = handlers.RotatingFileHandler(os.path.join(log_error_path, "error.wf.log"),
                                           maxBytes=1024\*1024\*30, backupCount=50, encoding="utf-8", delay=False)
    errorHandle.setLevel(logging.ERROR)
    # errorHandle.addFilter(logFilter(logging.ERROR))
    errorHandle.setFormatter(self.log_formatter)
    self.logger.addHandler(errorHandle)

def get\_logger(self):
    return self.logger

logger = CustomLogging(name).get_logger()

if name == “__main__”:
logger.info(“Log Info…”)
logger.error(“Log Error…”)



%(levelno)s: 打印日志级别的数值
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
备注python)**
[外链图片转存中…(img-gtQd2MeX-1713431183584)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python的logging模块可以用来记录程序运行时的日志信息,包括调试信息、警告信息、错误信息等。为了方便使用,可以对logging模块进行封装,使其更容易调用和管理。 以下是一些可能有用的封装方法: 1. 封装基本配置:将logging模块的基本配置封装成一个函数,可以方便地进行调用和修改。例如: ```python import logging def init_logger(log_file): logger = logging.getLogger() logger.setLevel(logging.DEBUG) handler = logging.FileHandler(log_file) formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) ``` 这个函数会初始化一个logger对象,并将其级别设置为DEBUG,将日志输出到指定的文件中,并使用指定的格式进行格式化。 2. 封装消息类型:可以定义不同的消息类型,例如debug、info、warning、error等,然后为每种类型都定义一个封装函数,以简化调用。例如: ```python import logging logger = logging.getLogger() def debug(msg): logger.debug(msg) def info(msg): logger.info(msg) def warning(msg): logger.warning(msg) def error(msg): logger.error(msg) ``` 这样,使用时可以直接调用对应的函数,例如: ```python debug('this is a debug message') warning('this is a warning message') ``` 3. 封装上下文信息:有时候需要在日志中添加一些上下文信息,例如当前时间、请求参数、用户ID等。可以定义一个上下文管理器,用with语句来管理上下文信息的输出。例如: ```python import logging logger = logging.getLogger() class LogContext: def __init__(self, **kwargs): self.kwargs = kwargs def __enter__(self): logger.info('start context', extra=self.kwargs) def __exit__(self, exc_type, exc_value, traceback): logger.info('end context', extra=self.kwargs) ``` 使用时可以这样调用: ```python with LogContext(user_id=123): logger.info('do something') ``` 这样会在日志中输出一条包含上下文信息的记录。 总之,封装logging模块可以帮助我们更方便地使用日志功能,提高开发效率和代码可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值