帮助记录的方法和工具。

logtool的Python项目详细描述


帮助记录的方法和工具。可以从pypi安装:

$ pip install logtool

登录呼叫

在调试时记录的函数和方法定义的修饰符。 对每个对该入口点进行的调用的各种数据进行分级。

打算取代@log_func和log_func_noargs(见下文)。见 例如输出的log func。

可选参数:

登录
记录装饰方法的入口。默认为真。
日志参数
记录传递给修饰方法的参数。默认为真。
dt> LogExeX< d> >从已装饰方法中退出/返回,以及执行时间。默认为真。
对数rc
记录修饰方法返回的值。默认为真。
日志跟踪
在执行时记录修饰方法的每一行。默认为false。
对数电平
用于调用logginf的日志级别。默认为logging.dbeug。
@logtool.log_call
def a_method (...):
 ...etc...
@logtool.log_call (log_args = False, log_rc = False)
def big_complex_data (...):
 ...etc...

对数函数

在调试级别记录的函数和方法定义的修饰符 对该函数或方法的每次调用及其参数。

例如

@logtool.log_wrap
def my_method (self, *args):
  ...stuff here...

实际生产使用产生的日志条目(使用 修订的参数值:

Entered: function:test_tool.toolwrapper:email_report ((<test_tool.meshtool.Wrapper object at 0x7f19d4879c10>, path(u'../file.ext'), 'address@domain.com', 'address@domain.com', 'Interesting subject header') {})

结尾的{}表示没有将命名参数传递给 那通电话,否则会显示在那里。

对数函数noargs

在调试级别记录的函数和方法定义的修饰符 对该函数或方法的每次调用,但不带任何参数。这个 可以在遍历和转储参数时使用 代价高昂,或者可能会产生无限循环。

例如

@logtool.log_wrap_noargs
def my_method (self, *args):
  ...stuff here...

记录故障

以标准化形式记录异常,包括源文件和 异常的行号,如果记录在调试级别,还将记录 堆栈跟踪以及每个堆栈帧中的所有变量。例如

处于警告或更高模式:

CRITICAL <log_fault_impl:log_fault(24)> FAULT: /usr/local/lib/python2.7/dist-packages/workerd-0.1.26_gbb342e2-py2.7.egg/workerd/do.py(243): IOError(28, 'No space left on device')

在调试时登录:

CRITICAL <log_fault_impl:log_fault(24)> FAULT: /usr/local/lib/python2.7/dist-packages/workerd-0.1.26_gbb342e2-py2.7.egg/workerd/do.py(243): IOError(28, 'No space left on device')
DEBUG <log_fault_impl:log_fault(26)> Locals by frame, innermost last:
DEBUG <log_fault_impl:log_fault(30)> Frame run in /usr/local/lib/python2.7/dist-packages/workerd-0.1.26_gbb342e2-py2.7.egg/workerd/do.py at line 248
DEBUG <log_fault_impl:log_fault(40)>                 self = <workerd.do.Do object at 0x7f5709e3d490>
DEBUG <log_fault_impl:log_fault(40)>                    e = [Errno 28] No space left on device
DEBUG <log_fault_impl:log_fault(40)>                   rc = 0
DEBUG <log_fault_impl:log_fault(30)> Frame wrapper_args in build/bdist.linux-x86_64/egg/mppy/log_wrap.py at line 27
DEBUG <log_fault_impl:log_fault(40)>                 args = (<workerd.do.Do object at 0x7f5709e3d490>,)
DEBUG <log_fault_impl:log_fault(40)>                   fn = <function do_job at 0x7f570a2936e0>
DEBUG <log_fault_impl:log_fault(40)>               kwargs = {}
DEBUG <log_fault_impl:log_fault(30)> Frame do_job in /usr/local/lib/python2.7/dist-packages/workerd-0.1.26_gbb342e2-py2.7.egg/workerd/do.py at line 227
DEBUG <log_fault_impl:log_fault(40)>                  toc = 1410867312.58
DEBUG <log_fault_impl:log_fault(40)>                 self = <workerd.do.Do object at 0x7f5709e3d490>
DEBUG <log_fault_impl:log_fault(40)>                  tic = 1410842559.54
DEBUG <log_fault_impl:log_fault(40)>                   rc = -99
DEBUG <log_fault_impl:log_fault(30)> Frame __setitem__ in build/bdist.linux-x86_64/egg/mppy/jsondict.py at line 69
DEBUG <log_fault_impl:log_fault(40)>                 self = {u'status': u'pending', u'notified_for': u'pending
DEBUG <log_fault_impl:log_fault(40)>                  key = execution_time
DEBUG <log_fault_impl:log_fault(40)>                  val = 24753.043578
DEBUG <log_fault_impl:log_fault(40)>               kwargs = {}
DEBUG <log_fault_impl:log_fault(30)> Frame wrapper in build/bdist.linux-x86_64/egg/mppy/jsondict.py at line 80
DEBUG <log_fault_impl:log_fault(40)>                 self = {u'status': u'pending', u'notified_for': u'pending
DEBUG <log_fault_impl:log_fault(40)>               kwargs = {}
DEBUG <log_fault_impl:log_fault(40)>                 attr = <bound method JsonDict.save of {u'status': u'pendi
DEBUG <log_fault_impl:log_fault(40)>                 args = ()
DEBUG <log_fault_impl:log_fault(40)>           was_loaded = True
DEBUG <log_fault_impl:log_fault(30)> Frame save in build/bdist.linux-x86_64/egg/mppy/jsondict.py at line 46
DEBUG <log_fault_impl:log_fault(40)>                force = False
DEBUG <log_fault_impl:log_fault(40)>                 self = {u'status': u'pending', u'notified_for': u'pending
DEBUG <log_fault_impl:log_fault(40)>                   fd = 5
DEBUG <log_fault_impl:log_fault(40)>                   fn = /var/spool/matterport/workerd/generate_mesh/d34fea

时间强度

简单地返回一个时间(从纪元开始的秒数,可能是小数) 以简单一致的字符串形式,适用于日志文件、报表和 类似的。

请参见下面的now下面的示例。

现在

将当前时间的元组重新作为时间并与其匹配 time_str.将两个字符串组合在一起可以用于 日志等,以及用作数字的时间。例如:

$ ipython
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
Type "copyright", "credits" or "license" for more information.

IPython 1.2.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import logtool

In [2]: logtool.now ()
Out[2]: (1411075417, '21:23:37 Thu 18 Sep 2014 Z+0000')

In [3]: logtool.time_str (logtool.now ()[0])
Out[3]: '14:23:42 Thu 18 Sep 2014 Z+0000'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在Hibernate中从两个具有不同功能的表(postgreSQL)映射一个实体   java jfreechart需要自定义Y轴,以便打印   Java:从外部获取类。罐子   java如何获取Appium服务器日志   具有完全相同内容的java重写函数会导致错误   java消息的类路径是什么。属性(如果在依赖项jar中)   循环/相等的java问题==   java如何使用ionic cordova angularjs将所选图像发送到spring controller以保存到服务器?   库中的java语言环境数据   java从JSON webservice检索安卓中的字节[]   调试如何从Java中的类调试方法?   java将日期字符串切割成变量   无法使用java附加到文件?