帮助记录的方法和工具。

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有没有工具可以将zephyr转换为velocity模板?   java在安卓 studio中从JSON响应中获取值   jvm如何在Java中设计一个好的permgen空间字符串?   java如何防止Rest webservice使用被盗令牌进行身份验证   java无法遍历列表JSTL   找不到用于ResourceServerTokenServices的java Bean SpringSecurityOauth2   java子字符串替换问题   爪哇玻璃鱼3。十、 以编程方式处理任意HTTPSession的终止   java如何检查输入是否为整数,并在最后添加一个命令来重新启动while循环?   引发java ical4j 1.0.6不可解析日期异常   Java等价于Delphi的DBCtrlGrid?   如果发生错误,java将查找下一个预期标记ANTLR 3   java自打开应用程序(创建锁屏)   java为什么netty有自己的ConcurrentHashMap?   Gradle任务中的java拉取和运行依赖项   继承与Java继承的混淆   java使用shell脚本中的版本执行jar   java我无法让Sqlite数据库与带有Maven的JavaFX应用程序IDE Eclipse包正确通信   java控制台日志未通过org打印。阿帕奇。hadoop。mapreduce。作业的waitForCompletion(true)方法   JAVAlang.NoSuchMethodError:apachestorm螺栓中的spring getrequest