为在python中创建LogRecord而传递的参数

问题描述 投票:0回答:1

[Python的LogRecord中的logging module的LogRecord定义为:

logging module

例如,当有人执行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',) 通话中收集其他项目?例如:

  • 路径名
  • lineno
  • exc_info
  • 功能
  • sinfo#这是什么?
  • kwargs#这只是用户添加的kwargs,还是其他?

例如,在您的答案中,您可以显示一个对函数调用进行自省以收集上述信息的示例吗?

python logging python-internals
1个回答
0
投票

几乎所有这些都发生在logging中。它检查当前帧以获取此信息。

© www.soinside.com 2019 - 2024. All rights reserved.