Python-添加动态调试记录器样式的行号和时间函数

Python-添加动态调试记录器样式的行号和时间函数,python,alias,Python,Alias,下面的函数报告当前行号和时间,当发生运行时异常时,我希望从其他函数中调用这些行号和时间 可以理解,返回的行号始终与gTime函数本身中getframeinfo的位置有关,即它是静态的 只要在需要line.num/time数据时使用gTime功能,而无需直接将长gTime代码添加到主代码体中所需的每个位置。我想我真正想要的是某种命令序列别名来替代我的gTime函数中的代码,但我找不到任何解决问题的方法 标准的“logger”模块在我的多线程应用程序中无法可靠工作,因此我求助于手动解决方案 from

下面的函数报告当前行号和时间,当发生运行时异常时,我希望从其他函数中调用这些行号和时间

可以理解,返回的行号始终与gTime函数本身中getframeinfo的位置有关,即它是静态的

只要在需要line.num/time数据时使用gTime功能,而无需直接将长gTime代码添加到主代码体中所需的每个位置。我想我真正想要的是某种命令序列别名来替代我的gTime函数中的代码,但我找不到任何解决问题的方法


标准的“logger”模块在我的多线程应用程序中无法可靠工作,因此我求助于手动解决方案

from inspect import currentframe, getframeinfo
from datetime import datetime

def gTime():
    position = "%s [%s] - " % (str(datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f").rstrip('0')),getframeinfo(currentframe()).lineno)
    return position 

print gTime()
如果您不能使用日志记录,我建议您尽可能多地使用它的内部结构,或者至少从中学习;看

特别是,logging.currentframe可用于获取封闭框架:

from inspect import getframeinfo
from logging import currentframe
from datetime import datetime

def callingFrame():
    return getframeinfo(currentframe())

def gTime():
    position = "%s [%s] - " % (str(datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f").rstrip('0')), callingFrame().lineno)
    return position 

print gTime()

标准的“logger”模块在我的多线程应用程序中无法可靠工作,因此我求助于手动解决方案

from inspect import currentframe, getframeinfo
from datetime import datetime

def gTime():
    position = "%s [%s] - " % (str(datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f").rstrip('0')),getframeinfo(currentframe()).lineno)
    return position 

print gTime()

日志模块旨在实现线程安全,无需任何特殊设置 需要客户完成的工作。它通过使用 螺纹锁;有一个锁用于序列化对模块的 每个处理程序还创建一个锁来序列化访问 到它的底层I/O


为什么它不能可靠地工作?

为什么您不喜欢标准python日志模块?就像我说的,标准“logger”模块在我的多线程应用程序中不能可靠地工作,所以我求助于手动解决方案。-我遇到了这个错误,无法更新我们的库,因为内部原因Concurent日志处理程序也帮不上忙?我正遭受这个bug bugs.python.org/issue11444的困扰,由于内部原因无法更新我们的库,因此在此期间,我正在寻找另一种解决方案。我还想更多地了解命令序列别名的潜力。