帮助记录的方法和工具。
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'