Skip to main content

辅助记录的方法和工具。

项目描述

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

$ pip install logtool

日志调用

函数和方法定义的装饰器,在 DEBUG 级别记录有关对该入口点的每次调用的各种数据。

旨在取代 @log_func 和 log_func_noargs(见下文)。有关示例输出,请参见 log_func。

可选参数:

登录输入

装饰方法的日志入口。默认为真。

日志参数

记录传递给修饰方法的参数。默认为真。

日志退出

记录装饰方法的退出/返回以及执行时间。默认为真。

日志_rc

记录装饰方法返回的值。默认为真。

日志跟踪

在执行装饰方法时记录其每一行。默认为假。

日志级别

用于调用的 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') {})

最后的 {} 表明没有传递给该调用的命名参数,否则它们将显示在那里。

log_func_noargs

函数和方法定义的装饰器,在 DEBUG 级别记录对该函数或方法的每次调用,但没有任何参数。当遍历和转储参数非常昂贵或可能会创建无限循环时,这可能很有用。

例如

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

日志故障

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

在 WARN 或更高模式下:

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 登录时:

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)> 按帧本地化,最里面最后一个:
DEBUG <log_fault_impl:log_fault(30)> 框架运行在 /usr/local/lib/python2.7/dist-packages/workerd-0.1.26_gbb342e2-py2.7.egg/workerd/do.py 第 248 行
调试 <log_fault_impl:log_fault(40)> self = <workerd.do.Do object at 0x7f5709e3d490>
调试 <log_fault_impl:log_fault(40)> e = [Errno 28] 设备上没有剩余空间
调试 <log_fault_impl:log_fault(40)> rc = 0
调试 <log_fault_impl:log_fault(30)> 第 27 行 build/bdist.linux-x86_64/egg/mppy/log_wrap.py 中的帧 wrapper_args
调试 <log_fault_impl:log_fault(40)> args = (<workerd.do.Do object at 0x7f5709e3d490>,)
调试 <log_fault_impl:log_fault(40)> fn = <function do_job at 0x7f570a2936e0>
调试 <log_fault_impl:log_fault(40)> kwargs = {}
调试 <log_fault_impl:log_fault(30)> 在第 227 行的 /usr/local/lib/python2.7/dist-packages/workerd-0.1.26_gbb342e2-py2.7.egg/workerd/do.py 中构建 do_job
调试 <log_fault_impl:log_fault(40)> 目录 = 1410867312.58
调试 <log_fault_impl:log_fault(40)> self = <workerd.do.Do object at 0x7f5709e3d490>
调试 <log_fault_impl:log_fault(40)> tic = 1410842559.54
调试 <log_fault_impl:log_fault(40)> rc = -99
在第 69 行的 build/bdist.linux-x86_64/egg/mppy/jsondict.py 中调试 <log_fault_impl:log_fault(30)> 框架 __setitem__
调试 <log_fault_impl:log_fault(40)> self = {u'status': u'pending', u'notified_for': u'pending
调试 <log_fault_impl:log_fault(40)> key = execution_time
调试 <log_fault_impl:log_fault(40)> val = 24753.043578
调试 <log_fault_impl:log_fault(40)> kwargs = {}
DEBUG <log_fault_impl:log_fault(30)> 框架包装器在 build/bdist.linux-x86_64/egg/mppy/jsondict.py 第 80 行
调试 <log_fault_impl:log_fault(40)> self = {u'status': u'pending', u'notified_for': u'pending
调试 <log_fault_impl:log_fault(40)> kwargs = {}
DEBUG <log_fault_impl:log_fault(40)> attr = <bound method JsonDict.save of {u'status': u'pendi
调试 <log_fault_impl:log_fault(40)> args = ()
调试 <log_fault_impl:log_fault(40)> was_loaded = True
DEBUG <log_fault_impl:log_fault(30)> 帧保存在 build/bdist.linux-x86_64/egg/mppy/jsondict.py 第 46 行
调试 <log_fault_impl:log_fault(40)> 强制 = False
调试 <log_fault_impl:log_fault(40)> self = {u'status': u'pending', u'notified_for': u'pending
调试 <log_fault_impl:log_fault(40)> fd = 5
调试 <log_fault_impl:log_fault(40)> fn = /var/spool/matterport/workerd/generate_mesh/d34fea

time_str

只需以适合日志文件、报告等的简单一致字符串形式返回 time_t(自纪元以来的秒数,可能是小数)。

请参阅下面示例。

现在

将当前时间的元组作为 time_t 及其匹配的 time_str 重新生成。将两者放在一起允许将字符串用于日志等,并将 time_t 用作数字。例如:

$ 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'

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

logtool-0.3.post17.tar.gz (29.9 kB 查看哈希

已上传 source