暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python日志库logging的使用

一叶扁舟 2020-09-03
3041

推荐:Java日志框架:SpringBoot整合日志框架

一、创建日志配置类

# encoding=utf-8
import logging
import time
import os


# 创建存储日志的路径
log_path = os.getcwd()
class Log(object):
    def __init__(self):
        # 文件的命名
        self.logname = os.path.join(log_path, '%s.log' % time.strftime('%Y_%m_%d'))
        # 创建日志对象
        self.logger = logging.getLogger(__name__)
        self.logger.setLevel(logging.DEBUG)
        # 日志输出格式
        self.formatter = logging.Formatter('[%(asctime)s] - %(filename)s] - %(levelname)s: %(message)s')

    def config(self, level, message):
        # 创建一个FileHandler,用于写到本地
        file_handler = logging.FileHandler(self.logname, 'a', encoding='utf-8')
        file_handler.setLevel(logging.DEBUG) # 设置等级
        file_handler.setFormatter(self.formatter) # 把输出格式加入输出方式
        self.logger.addHandler(file_handler) # 把以上设置加入对象

        # 创建一个StreamHandler,用于输出到控制台
        stream_handler = logging.StreamHandler()
        stream_handler.setLevel(logging.DEBUG)
        stream_handler.setFormatter(self.formatter)
        self.logger.addHandler(stream_handler)

        if level == 'info':
            self.logger.info(message)
        elif level == 'debug':
            self.logger.debug(message)
        elif level == 'warning':
            self.logger.warning(message)
        elif level == 'error':
            self.logger.error(message)
        # 这两行代码是为了避免日志输出重复问题
        self.logger.removeHandler(file_handler)
        self.logger.removeHandler(stream_handler)
        # 关闭打开的文件
        file_handler.close()

    def debug(self, message):
        self.__console('debug', message)

    def info(self, message):
        self.__console('info', message)

    def warning(self, message):
        self.__console('warning', message)

    def error(self, message):
        self.__console('error', message)

日志输出格式参数
%(levelno)s:打印日志级别的数值
%(levelname)s:打印日志级别的名称
%(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s:打印当前执行程序名
%(funcName)s:打印日志的当前函数
%(lineno)d:打印日志的当前行号
%(asctime)s:打印日志的时间
%(thread)d:打印线程ID
%(threadName)s:打印线程名称
%(process)d:打印进程ID
%(message)s:打印日志信息

二、使用日志

from log_init import Log 
log.info(“这是个Info日志")
最后修改时间:2020-09-03 10:25:58
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论