传递参数以在 python 中创建 LogRecord
Arguments passed to create a LogRecord in python
python 的 logging module
中的 LogRecord
的 LogRecord 定义为:
class LogRecord(object):
"""
A LogRecord instance represents an event being logged.
LogRecord instances are created every time something is logged. They
contain all the information pertinent to the event being logged. The
main information passed in is in msg and args, which are combined
using str(msg) % args to create the message field of the record. The
record also includes information such as when the record was created,
the source line where the logging call was made, and any exception
information to be logged.
"""
def __init__(self, name, level, pathname, lineno,
msg, args, exc_info, func=None, sinfo=None, **kwargs):
"""
Initialize a logging record with interesting information.
"""
ct = time.time()
self.name = name
self.msg = msg
# more stuff below
此 LogRecord
会被创建,例如每当有人执行 logging
操作时,例如:
def my_func():
logging.info('Hello %s', 'Person')
return 1
在上面的记录器调用中,变量可以推断为:
name = 'root' # using the root logger since calling `logging.`
level = 'INFO' # or, 20
msg = 'Hello %s'
args = ('Person',)
内省如何从我的 logging
调用中收集其他项目?例如:
- 路径名
- 线号
- exc_info
- 函数
- sinfo # 这是什么?
- kwargs # 这只是用户添加的 kwargs 还是其他?
例如,在您的回答中,您能否展示一个对函数调用进行内省以收集上述信息的示例?
几乎所有的事情都发生在 Logger.findCaller。它检查当前帧以获取此信息。
实际上并未使用默认 LogRecord 构造函数的 kwargs 参数。用户提供的数据通过 extra
.
传入
python 的 logging module
中的 LogRecord
的 LogRecord 定义为:
class LogRecord(object):
"""
A LogRecord instance represents an event being logged.
LogRecord instances are created every time something is logged. They
contain all the information pertinent to the event being logged. The
main information passed in is in msg and args, which are combined
using str(msg) % args to create the message field of the record. The
record also includes information such as when the record was created,
the source line where the logging call was made, and any exception
information to be logged.
"""
def __init__(self, name, level, pathname, lineno,
msg, args, exc_info, func=None, sinfo=None, **kwargs):
"""
Initialize a logging record with interesting information.
"""
ct = time.time()
self.name = name
self.msg = msg
# more stuff below
此 LogRecord
会被创建,例如每当有人执行 logging
操作时,例如:
def my_func():
logging.info('Hello %s', 'Person')
return 1
在上面的记录器调用中,变量可以推断为:
name = 'root' # using the root logger since calling `logging.`
level = 'INFO' # or, 20
msg = 'Hello %s'
args = ('Person',)
内省如何从我的 logging
调用中收集其他项目?例如:
- 路径名
- 线号
- exc_info
- 函数
- sinfo # 这是什么?
- kwargs # 这只是用户添加的 kwargs 还是其他?
例如,在您的回答中,您能否展示一个对函数调用进行内省以收集上述信息的示例?
几乎所有的事情都发生在 Logger.findCaller。它检查当前帧以获取此信息。
实际上并未使用默认 LogRecord 构造函数的 kwargs 参数。用户提供的数据通过 extra
.