http://www.vimer.cn/2010/12/%E5%9C%A8python%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E4%BD%8D%E7%BD%AE%E6%89%80%E5%9C%A8%E7%9A%84%E8%A1%8C%E5%8F%B7%E5%92%8C%E5%87%BD%E6%95%B0%E5%90%8D.html
对于python,这几天一直有两个问题在困扰我:
1.python中没办法直接取得当前的行号和函数名。这是有人在论坛里提出的问题,底下一群人只是在猜测python为什么不像__file__一样提供__line__和__func__,但是却最终也没有找到解决方案。
2.如果一个函数在不知道自己名字的情况下,怎么才能递归调用自己。这是我一个同事问我的,其实也是获取函数名,但是当时也是回答不出来。
但是今晚!所有的问题都有了答案。
一切还要从我用python的logging模块说起,logging中的format中是有如下选项的:
01
%(name)s Name of the logger (logging channel)
02
%(levelno)s Numeric logging levelfor the message (DEBUG, INFO,
03
WARNING, ERROR, CRITICAL)
04
%(levelname)s Text logging levelfor the message ("DEBUG","INFO",
05
"WARNING","ERROR","CRITICAL")
06
%(pathname)s Full pathname of the sourcefile where the logging
07
call was issued (if available)
08
%(filename)s Filename portion of pathname
09
%(module)s Module (name portion of filename)
10
%(lineno)d Source line number where the logging call was issued
11
(if available)
12
%(funcName)s Function name
13
%(created)f Time when the LogRecord was created (time.time()
14
return value)
15
%(asctime)s Textual time when the LogRecord was created
16
%(msecs)d Millisecond portion of the creation time
17
%(relativeCreated)d Timein milliseconds when the LogRecord was created,
18
relative to the time the logging module was loaded
19
(typically at application startup time)
20
%(thread)d ThreadID (if available)
21
%(threadName)s Thread name (if available)
22
%(process)d ProcessID (if available)
23
%(message)s The