Python使用logging模块记录日志

 

import logging
import sys

#创建一个logger对象
logger = logging.getLogger('my_logger')

#定义需要记录的日志等级ERROR,WARNING,INFO,DEBUG
logger.setLevel(logging.ERROR)

#定义日志格式,时间默认会精确到毫秒,通过datefmt精确到秒
formatter = logging.Formatter(
    "%(asctime)s - %(lineno)s - %(message)s",
    datefmt='%Y-%m-%d %H:%M:%S'
    )

#将日志输出到文件 error.log
file_handler = logging.FileHandler("error.log", encoding="utf-8")
file_handler.setFormatter(formatter)

#将日志打印到控制台
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(formatter)

#将Handler添加到对饮的logger中
logger.addHandler(file_handler)
logger.addHandler(console_handler)


def divide(a, b):
    try:
        return a / b
    except Exception as e:
        # logger.exception(e)  # 自动记录堆栈信息
        #记录error级别日志,其他级别日志使用logger.debug(info\warn\critical)
        logger.error(e)
        print(999)


divide(10, 0)

 

将Logging模块封装成类,然后可以在其他地方进行调用

1.将以下代码保存为名为 logtest.py的文件

import logging,sys

class Logger:
    def __init__(self, log_path, clevel = logging.DEBUG, flevel = logging.DEBUG):
        self.logger = logging.getLogger('my_logger')
        self.logger.setLevel(logging.DEBUG)
        formatter = logging.Formatter("%(asctime)s - %(module)s - %(lineno)s - %(message)s",datefmt='%Y-%m-%d %H:%M:%S')
        
        #设置CMD日志
        console_handler = logging.StreamHandler()
        console_handler.setFormatter(formatter)
        console_handler.setLevel(clevel)

        #设置文件日志
        file_handler = logging.FileHandler(log_path)
        file_handler.setFormatter(formatter)
        file_handler.setLevel(flevel)

        self.logger.addHandler(console_handler)
        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)

2.在另一个脚本中导入该类,并调用

from logtest import Logger 
import logging

#设置CMD日志输出级别为INFO,文件日志输出级别为ERROR
logc = Logger('d:\\temp\\a\\alog.log',logging.INFO,logging.ERROR)

logc.info('infooooo')

logc.error('erroreee')

 

posted on 2025-04-17 14:14  momingliu11  阅读(39)  评论(0)    收藏  举报