我想将 Python 记录器包装在一个自定义类中,以嵌入一些特定于应用程序的功能,并向开发人员隐藏设置细节(设置文件输出、日志记录级别等)。为此,我创建了一个具有以下 API 的类:
__init__(log_level, filename)
debug(msg)
info(msg)
warning(msg)
error(msg)
Logger.debug/info/warning/etc 调用通常在日志中写入进行日志调用的函数和行号。但是,使用我的自定义类,写入日志文件的函数和行号始终相同(对应于自定义类中的 debug()/info()/warning()/error() 函数)。我希望它保存记录消息的应用程序代码行。这可能吗?
提前致谢。
最佳答案
是:sys._getframe(NUM)
其中 NUM 表示您正在寻找的当前函数之外有多少函数。返回的框架对象具有类似 f_lineno
的属性和 f_code.co_filename
.
http://docs.python.org/library/sys.html#sys._getframe
关于python - 日志中的自定义 Logger 类和正确的行号/函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12980512/