Python 简单封装logging日志类

支持命令行回显日志和写入日志到文件 

# !usr/bin/python3
# -*- coding=utf-8 -*-
# @Author  : zunsi
# @File : ploggerv1.py
# @Time : 2020-06-21  13:40:20


import os
import logging
from logging import handlers


class MyLogger(logging.Logger):
    def __init__(self, toconsole=True, tofile=False, logpath=None, logfilename='TestLogs'):
        # 设置输出级别、输出渠道、输出日志格式
        # super().__init__(name,level)
        super().__init__(__name__, "DEBUG")
        self.ToConsole = toconsole  # DEBUG: Show debug info for developers. (default False)
        self.ToFile = tofile
        self.log_path = logpath
        self.log_file_name = logfilename


        # 日志格式
        formatter = logging.Formatter(
            "[%(asctime)s] - %(levelname)s -  %(message)s")  # %(filename)s  <%(funcName)s>  [ line:%(lineno)d ] %(pathname)s


        if self.ToConsole:
            cout_handler = logging.StreamHandler()
            cout_handler.setFormatter(formatter)
            self.addHandler(cout_handler)

        if self.ToFile:
            action = "logs"
            path = os.path.join(self.log_path, action)
            if not os.path.exists(path):
                os.makedirs(path)
            log_file_path = os.path.join(path, self.log_file_name + ".log")

            file_handler = logging.handlers.TimedRotatingFileHandler(log_file_path, when='D', interval=1,
                                                                     encoding="utf-8",
                                                                     backupCount=1)
            file_handler.setFormatter(formatter)
            self.addHandler(file_handler)


if __name__ == '__main__':
    logs_path = os.getcwd()
    mlog = MyLogger(toconsole=True, tofile=False, logpath=logs_path)
    mlog.debug("测试,简单封装的日志类!!!")

推荐大佬的日志工具: GitHub - ydf0509/nb_log: pip install nb_log 各种日志handler和自动转化项目的任意print的效果。日志自动彩色炫酷,可点击控制台的日志自动精确跳转到pycharm的文件和行号。文件日志多进程切割安全。在10个最重要方面全方位超过loguru 使用原生 loggng封装,兼容性和替换性100%。

        1、日志能根据级别能够自动变彩色。

        2、print自动变彩色。

        3、日志和print在pycahrm控制台的输出都自动可以点击跳转到文件和行号。

        4、多进程日志切割安全,文件日志写入性能高 。

        5、入参简单,能一键自动记录到多种地方。

使用方法:

        pip install nb_log 


使用场景:

        正式开发

路径:

        windows下:C:\Users\Admin\AppData\Local\Programs\Python\Python38\Lib\site-packages

nb_log 属性:

 

引用:

模块 logging --- Python 的日志记录工具 — Python 3.7.13 說明文件
https://docs.python.org/zh-tw/3.7/library/logging.html

191104-Python 封装一个通用日志插件 - 一灰灰Blog
https://liuyueyi.github.io/hexblog/2019/11/04/191104-Python-%E5%B0%81%E8%A3%85%E4%B8%80%E4%B8%AA%E9%80%9A%E7%94%A8%E6%97%A5%E5%BF%97%E5%B7%A5%E5%85%B7%E7%B1%BB/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用Python内置的logging模块来封装一个日志。下面是一个简单的示例代码: ```python import logging class MyLogger: def __init__(self, name, level=logging.INFO): self.logger = logging.getLogger(name) self.logger.setLevel(level) # 定义日志输出格式 formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') # 创建控制台日志处理器 console_handler = logging.StreamHandler() console_handler.setLevel(level) console_handler.setFormatter(formatter) self.logger.addHandler(console_handler) # 创建文件日志处理器 file_handler = logging.FileHandler(filename='mylog.log', mode='a', encoding='utf-8') file_handler.setLevel(level) file_handler.setFormatter(formatter) self.logger.addHandler(file_handler) def debug(self, message): self.logger.debug(message) def info(self, message): self.logger.info(message) def warning(self, message): self.logger.warning(message) def error(self, message): self.logger.error(message) def critical(self, message): self.logger.critical(message) ``` 这个日志包含了一个构造方法和5个方法,分别对应了不同级别的日志输出。在构造方法,我们使用logging.getLogger()方法创建了一个Logger对象,并设置了日志级别。然后定义了两个日志处理器,一个是输出到控制台,一个是输出到文件。在每个方法,我们通过调用Logger对象的不同方法来输出不同级别的日志。这些日志信息将会被输出到控制台和指定的日志文件。 使用该日志的代码示例如下: ```python logger = MyLogger('mylogger') logger.info('This is an info message') logger.warning('This is a warning message') logger.error('This is an error message') ``` 上述代码将会在控制台和mylog.log文件输出不同级别的日志信息。通过这种方式,我们可以方便地封装一个可复用的日志,提高代码的可维护性和可读性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值