python 日志模块封装_Python logging模块进行封装实现原理解析

1. 简介

追踪某些软件运行时所发生事件的方法, 可以在代码中调用日志中某些方法来记录发生的事情

一个事件可以用一个可包含可选变量数据的消息来描述

事件有自己的重要性等级

2. 使用logging日志系统四大组件

loggers日志器

提供应用程序代码直接使用的接口

handlers处理器

用于将日志记录发送到指定的目的位置

filters过滤器

过滤, 决定哪些输出哪些日志记录, 其余忽略

formatters格式器

控制日志输出格式

使用代码如下

import os, time, logging, sys

from Common.plugs.get_config import r_config

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))

if sys.platform == "win32":

ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini').replace('/', '\\')

else:

ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini')

log_path = r_config(ENV_CONF_DIR, "log", "log_path")

class Log:

def __init__(self, log_path):

self.logName = os.path.join(log_path, '{0}.log'.format(time.strftime('%Y-%m-%d')))

def console_log(self, level, message):

# 创建一个logger

logger = logging.getLogger()

logger.setLevel(logging.DEBUG)

# 创建一个handler,用于 debug 写入日志文件

debug_file = logging.FileHandler(self.logName, 'a+', encoding='utf-8')

debug_file.setLevel(logging.DEBUG)

# 再创建一个handler,用于输出到控制台

ch = logging.StreamHandler()

ch.setLevel(logging.DEBUG)

# 定义handler的输出格式

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

debug_file.setFormatter(formatter)

ch.setFormatter(formatter)

# 给logger添加handler

logger.addHandler(debug_file)

logger.addHandler(ch)

# 记录一条日志

if level == 'info':

logger.info(message)

elif level == 'debug':

logger.debug(message)

elif level == 'warning':

logger.warning(message)

elif level == 'error':

logger.error(message)

elif level == 'critical':

logger.critical(message)

logger.removeHandler(ch)

logger.removeHandler(debug_file)

debug_file.close()

def debug(self, message): #最详细日志信息, 多用于问题诊断

self.console_log('debug', message)

def info(self, message): #仅次于DEBUG, 多用于记录关键点信息, 确保程序按预期执行

self.console_log('info', message)

def warning(self, message): #低等级故障, 但程序仍能运行, 如磁盘空间不足警告

self.console_log('warning', message)

def error(self, message): #由于比WARNING严重的问题, 导致某些功能不能正常运行时的记录

self.console_log('error', message)

def critical(self, message): 严重错误, 导致应用程序不能继续运行时的记录

self.console_log('critical', message)

if __name__ == '__main__':

Log(log_path).info("adasd")

Log(log_path).error("dsadasddasd")

'''

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值