python logging 日志 通过修饰器获取错误信息

版权声明:zhaojanc https://blog.csdn.net/qq_38641985/article/details/81672283

今天公司要求研究一下python日志相关的信息,用户通过使用图形化界面产生错误后并不知道为什么报错。因此,要通过日志实现记录错误的功能。

import functools
import logging

def create_logger():
    logger = logging.getLogger("test_log")
    logger.setLevel(logging.INFO)
    fh = logging.FileHandler("test.log")
    fmt = "\n[%(asctime)s-%(name)s-%(levelname)s]: %(message)s"
    formatter = logging.Formatter(fmt)
    fh.setFormatter(formatter)
    logger.addHandler(fh) 
    return logger

def log_exception(fn):
    @functools.wraps(fn)
    def wrapper(*args, **kwargs):

        logger = create_logger()
        try:
            fn(*args, **kwargs)
        except Exception as e:
            logger.exception("[Error in {}] msg: {}".format(__name__, str(e)))
            raise
    return wrapper


@log_exception
def tain(x):
    x=10
    def nat():
        print u
    nat()


tain(1)

运行它之后会生成一个test.log的日志文件,当报错时,会把错误记录起来。

猜你喜欢

转载自blog.csdn.net/qq_38641985/article/details/81672283