本人刚学python,发现print() 函数只能打印内容,不能像java的System.out.println()那样打印(含时间、线程、类、行等细信息),故自己写了个print_info()的方法。大神绕道,不喜勿喷,谢谢!!!! # -*- coding:utf-8 -*- import time import sys import threading def print_info(message): # dept = 1 表示找到该函数第一层调用者的位置信息 # dept = 0 表示该函数定义的位置信息 frame = sys._getframe(1) code = frame.f_code # print("func name = ", code.co_name) # print("func filename = ", code.co_filename) # print("func import lineno = ", code.co_firstlineno) # 模块导入该函数的位置 # print("func call lineno = ", frame.f_lineno) # 模块调用该函数的位置 # print("func locals = ", frame.f_locals) thread_name = threading.currentThread().getName() ident = threading.currentThread().ident print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), ">>> [", thread_name, "-", ident, "] (", code.co_filename, "@", frame.f_lineno, "line)", ":", message)
调用print_info()函数:
from com.diyun.python import print_info import logging if __name__ == "__main__": print_info("hello world")
打印效果如下: