【python 日志模块】打印常见的日志模块

python 程序经常需要打一些日志文件,如error,erro,debug,waring 等,所以我们需要一个模块去处理这个日志。下面是一个日志模板,以后可以拿来用。

loggers.py

# -*- coding: utf-8 -*-

import os
import time
import logging
import inspect

dt = time.strftime("%Y%m%d")

handlers = {logging.DEBUG: "./log/debug_%s.log" % (dt),
            logging.INFO: "./log/info_%s.log" % (dt),
            logging.WARNING: "./log/warn_%s.log" % (dt),
            logging.ERROR: "./log/error_%s.log" % (dt)}
loggers = {}


def init_loggers():
    for level in handlers.keys():
        path = os.path.abspath(handlers[level])
        handlers[level] = logging.FileHandler(path)
    for level in handlers.keys():
        logger = logging.getLogger(str(level))
        # 如果不指定level,获得的handler似乎是同一个handler
        logger.addHandler(handlers[level])
        logger.setLevel(level)
        loggers.update({level: logger})


# 加载模块时创建全局变量
init_loggers()


def print_now():
    return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())


def get_log_msg(message):
    return "[%s]  %s" % (print_now(), message)


def get_error_msg(message):
    frame, filename, lineNo, functionName, code, unknowField = inspect.stack()[2]
    return "[%s] [%s - %s - %s] %s" % (print_now(), filename, lineNo, functionName, message)


def info(message):
    message = get_log_msg(message)
    loggers[logging.INFO].info(message)


def error(message):
    message = get_error_msg(message)
    loggers[logging.ERROR].error(message)


def debug(message):
    message = get_log_msg(message)
    loggers[logging.DEBUG].debug(message)


def warn(message):
    message = get_log_msg(message)
    loggers[logging.WARNING].warning(message)

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页