博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 获取行号,函数名等信息
阅读量:6905 次
发布时间:2019-06-27

本文共 3769 字,大约阅读时间需要 12 分钟。

hot3.png

用于写日志

# -*- coding: utf-8 -*-"""日志处理为了兼容现有的print日志, 也采用print,而不是logging,增加日志级别 error > warn > info > debug 增加日期,行号,函数名,文件名"""import sys, os, timelog_level = 0DEBUG = 0INFO = 1WARN = 2ERROR = 3NONE = 4FG_DATETIME = FalseFG_LINENO = TrueFG_FILENAME = TrueFG_FUNCNAME = Truedef set_level(level):    """设置日志级别    log.set_level(log.DEBUG)    """    global log_level    log_level = leveldef set_opt(datetime=True, lineno=True, filename=True, funcnane=True):    """设置显示参数"""    global FG_DATETIME, FG_LINENO, FG_FILENAME, FG_FUNCNAME    FG_DATETIME = datetime    FG_LINENO = lineno    FG_FILENAME = filename    FG_FUNCNAME = funcnanedef _dolog(*args, **kw):    def tostr(arg):        if isinstance(arg, list):            arg = "[" + ",".join(map(str, arg)) + "]"        elif isinstance(arg, tuple):            arg = "(" + ",".join(map(str, arg)) + ")"        elif isinstance(arg, set):            arg = "{" + ",".join(map(str, arg)) + "}"        elif isinstance(arg, dict):            arg = "{" + ",".join(["%s:%s" % (str(k), str(v)) for k,v in arg.iteritems()]) + "}"        else:            arg = str(arg)        return arg            reparg = " ".join(map(tostr, args))    repkw = ""    if kw:        repkw = " | " + " ".join(["%s=%s" % (str(k), str(v)) for k,v in kw.iteritems()])        repstr = reparg + repkw    return repstr    def debug(*args, **kw):    if log_level > DEBUG: return    prefix = "[D]"        # traceback info    try:        raise Exception    except:        f_tb = sys.exc_info()[2].tb_frame.f_back                t = time.strftime("%Y-%m-%d %X") if FG_DATETIME else ""        name = os.path.basename(f_tb.f_code.co_filename) if FG_FILENAME else ""        funcname = f_tb.f_code.co_name if FG_FUNCNAME else ""        line = str(f_tb.f_lineno) if FG_LINENO else "" # int            tbstr = "[" + ",".join(filter(lambda x:str(x) != "", (t, name, funcname, line))) + "]"        print prefix + tbstr + _dolog(*args, **kw)def info(*args, **kw):    if log_level > INFO: return    prefix = "[I]"    # traceback info    try:        raise Exception    except:        f_tb = sys.exc_info()[2].tb_frame.f_back                t = time.strftime("%Y-%m-%d %X") if FG_DATETIME else ""        name = os.path.basename(f_tb.f_code.co_filename) if FG_FILENAME else ""        funcname = f_tb.f_code.co_name if FG_FUNCNAME else ""        line = str(f_tb.f_lineno) if FG_LINENO else "" # int    tbstr = "[" + ",".join(filter(lambda x:str(x) != "", (t, name, funcname, line))) + "]"        print prefix + tbstr + _dolog(*args, **kw)    def warn(*args, **kw):    if log_level > WARN: return    prefix = "[W]"    # traceback info    try:        raise Exception    except:        f_tb = sys.exc_info()[2].tb_frame.f_back                t = time.strftime("%Y-%m-%d %X") if FG_DATETIME else ""        name = os.path.basename(f_tb.f_code.co_filename) if FG_FILENAME else ""        funcname = f_tb.f_code.co_name if FG_FUNCNAME else ""        line = str(f_tb.f_lineno) if FG_LINENO else "" # int    tbstr = "[" + ",".join(filter(lambda x:str(x) != "", (t, name, funcname, line))) + "]"       print prefix + tbstr + _dolog(*args, **kw)    def error(*args, **kw):    if log_level > ERROR: return    prefix = "[E]"    # traceback info    try:        raise Exception    except:        f_tb = sys.exc_info()[2].tb_frame.f_back                t = time.strftime("%Y-%m-%d %X") if FG_DATETIME else ""        name = os.path.basename(f_tb.f_code.co_filename) if FG_FILENAME else ""        funcname = f_tb.f_code.co_name if FG_FUNCNAME else ""        line = str(f_tb.f_lineno) if FG_LINENO else "" # int    tbstr = "[" + ",".join(filter(lambda x:str(x) != "", (t, name, funcname, line))) + "]"       print prefix + tbstr + _dolog(*args, **kw)

转载于:https://my.oschina.net/1123581321/blog/262708

你可能感兴趣的文章
(Portal 开发读书笔记) Personalization
查看>>
SRCNN 实验细节
查看>>
Java多线程第二节-线程的基本使用
查看>>
界面控件Essential Studio for ASP.NET Web Forms 2017 v3发布丨附下载
查看>>
教你制作属于自己的CentOS 6.4一键自动化安装ISO镜像光盘
查看>>
线上 mysql 主库配置文档
查看>>
Java web部署目录结构和web.xml作用
查看>>
负载均衡DR(direct routing)模式
查看>>
Python中list的遍历
查看>>
Linux下查看内存等硬件信息
查看>>
mysql 登录权限
查看>>
Java之内部类
查看>>
怎样使用python帮助手册
查看>>
我的友情链接
查看>>
UITabelView的分割线处理及介绍
查看>>
Spring整合MyBatis
查看>>
打印机拒绝访问无法连接
查看>>
Linux学习路线图
查看>>
Linux系统下常见性能分析工具的使用
查看>>
事件驱动模型
查看>>