亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

詳解Python logging調用Logger.info方法的處理過程

2020-02-23 06:26:37
字體:
來源:轉載
供稿:網友

本次分析一下Logger.info的流程

1. Logger.info源碼:

 def info(self, msg, *args, **kwargs):  """  Log 'msg % args' with severity 'INFO'.  To pass exception information, use the keyword argument exc_info with  a true value, e.g.  logger.info("Houston, we have a %s", "interesting problem", exc_info=1)  """  if self.isEnabledFor(INFO):   self._log(INFO, msg, args, **kwargs)

注釋中反應了可以通過 msg和不定參數args來進行日志的格式化。
真實的調用為:_log方法:

2. Logger._log方法:

 def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False):  """  Low-level logging routine which creates a LogRecord and then calls  all the handlers of this logger to handle the record.  """  sinfo = None  if _srcfile:   #IronPython doesn't track Python frames, so findCaller raises an   #exception on some versions of IronPython. We trap it here so that   #IronPython can use logging.   try:    fn, lno, func, sinfo = self.findCaller(stack_info)   except ValueError: # pragma: no cover    fn, lno, func = "(unknown file)", 0, "(unknown function)"  else: # pragma: no cover   fn, lno, func = "(unknown file)", 0, "(unknown function)"  if exc_info:   if isinstance(exc_info, BaseException):    exc_info = (type(exc_info), exc_info, exc_info.__traceback__)   elif not isinstance(exc_info, tuple):    exc_info = sys.exc_info()  record = self.makeRecord(self.name, level, fn, lno, msg, args,         exc_info, func, extra, sinfo)  self.handle(record)

最后兩行:

生成日志記錄:

record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra, sinfo)

處理日志記錄

self.handle(record)

2 生成日志記錄:

 def makeRecord(self, name, level, fn, lno, msg, args, exc_info,     func=None, extra=None, sinfo=None):  """  A factory method which can be overridden in subclasses to create  specialized LogRecords.  """  rv = _logRecordFactory(name, level, fn, lno, msg, args, exc_info, func,        sinfo)  if extra is not None:   for key in extra:    if (key in ["message", "asctime"]) or (key in rv.__dict__):     raise KeyError("Attempt to overwrite %r in LogRecord" % key)    rv.__dict__[key] = extra[key]  return rv

調用_logRecordFactory初始化一個日志記錄實例,_logRecordFactory 其實就是LogRecord類,初始化時,可能包含logger的name, level、調用的函數、行號、日志字符串、模板參數、堆棧信息等。

再看extra信息,extra到底有何用?現在從代碼中可以看到,只是更新到生成的日志記錄實例的__dict__中去.猜測:肯定會在生成最終的日志字符串的時候會用到。繼續往下看。

3 處理日志記錄self.handle(record):

Logger繼承自Filterer,

 def handle(self, record):  """  Call the handlers for the specified record.  This method is used for unpickled records received from a socket, as  well as those created locally. Logger-level filtering is applied.  """  if (not self.disabled) and self.filter(record):   self.callHandlers(record)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品中文字幕在线| 亚洲欧美日韩在线高清直播| 91精品国产乱码久久久久久久久| 欧美激情视频网站| 国产精品久久久久久久av大片| 国产成人综合久久| 亚洲欧美日韩爽爽影院| 亚洲精品国产综合久久| www.精品av.com| 亚洲香蕉在线观看| 亚洲va欧美va国产综合久久| 国产精品美女午夜av| 免费不卡在线观看av| 伊人伊成久久人综合网站| 久久亚洲综合国产精品99麻豆精品福利| 国产精品久久久久久婷婷天堂| 7m第一福利500精品视频| 另类天堂视频在线观看| 国产精品视频26uuu| 午夜精品福利电影| 91理论片午午论夜理片久久| 国产精品国产三级国产专播精品人| 最新91在线视频| 色小说视频一区| 中文字幕亚洲欧美在线| 国产女人18毛片水18精品| 久久成人av网站| 国产亚洲日本欧美韩国| 亚洲视频在线观看免费| 91久久精品美女高潮| 久久亚洲精品中文字幕冲田杏梨| 欧美性猛交xxxx黑人猛交| 国产一区欧美二区三区| 中日韩美女免费视频网址在线观看| 精品久久久一区二区| 欧美成人小视频| 欧美日韩激情网| 久久久精品国产亚洲| 成人日韩av在线| 久久久久久久国产| 不用播放器成人网| 欧美一区二三区| 日韩视频免费大全中文字幕| 久久天天躁狠狠躁老女人| 色琪琪综合男人的天堂aⅴ视频| 国产精品日韩一区| 欧洲成人午夜免费大片| 亚洲精品久久久久中文字幕二区| 中文字幕在线成人| 乱亲女秽乱长久久久| 国产精品亚洲激情| 中文字幕久精品免费视频| 91欧美精品成人综合在线观看| 欧美激情高清视频| 亚洲成av人影院在线观看| 欧美午夜www高清视频| 欧美激情xxxx性bbbb| 亚洲美女免费精品视频在线观看| 欧美激情三级免费| 色七七影院综合| 久久久国产影院| 92福利视频午夜1000合集在线观看| 日韩高清电影免费观看完整| 亚洲成色999久久网站| 亚洲美女福利视频网站| 91中文在线观看| 91精品国产自产在线观看永久| 久久伊人精品天天| 日韩欧美在线视频日韩欧美在线视频| 亚洲精品日韩av| 国产精品免费电影| 国产亚洲精品激情久久| 26uuu国产精品视频| 国产精品免费小视频| 久久精品99久久久香蕉| 欧美另类精品xxxx孕妇| 国产91|九色| 在线观看视频99| 精品一区二区亚洲| 国产精品爽黄69天堂a| 国产精品入口免费视| www.色综合| 国产日本欧美视频| 日韩国产精品亚洲а∨天堂免| 亚洲少妇中文在线| 宅男66日本亚洲欧美视频| 亚洲全黄一级网站| 亚洲变态欧美另类捆绑| 亚洲精品一区中文字幕乱码| 黄色成人av网| 国产免费一区二区三区香蕉精| 亚洲加勒比久久88色综合| 97在线免费观看视频| 亚洲aⅴ男人的天堂在线观看| 日韩免费看的电影电视剧大全| 国产一区二区三区在线视频| 51色欧美片视频在线观看| 国内精品久久久久久影视8| 国产精品专区h在线观看| 精品爽片免费看久久| 国产精品流白浆视频| 亚洲福利在线观看| 久久久久久91香蕉国产| 国产精品久久77777| 国产99久久精品一区二区 夜夜躁日日躁| 欧美大尺度电影在线观看| 影音先锋欧美精品| 在线电影欧美日韩一区二区私密| 亚洲国产精品久久久久秋霞蜜臀| 亚洲欧美日本另类| 2021国产精品视频| 欧美日韩高清在线观看| 精品magnet| 亚洲精品二三区| 久久影院免费观看| 日韩中文字幕欧美| 久久久免费av| 欧美在线观看视频| 97超级碰在线看视频免费在线看| 日韩有码在线视频| 国产午夜精品久久久| 久久久精品电影| 亚洲成人网在线观看| 欧美日本在线视频中文字字幕| 国产偷亚洲偷欧美偷精品| 欧美国产日本高清在线| 欧美最猛性xxxx| 欧美第一页在线| 色播久久人人爽人人爽人人片视av| 亚洲第一区第一页| 国产精品高精视频免费| 精品久久久久久中文字幕一区奶水| www日韩中文字幕在线看| 精品亚洲永久免费精品| 97精品国产97久久久久久免费| 欧美亚洲国产视频小说| 久久久人成影片一区二区三区观看| 精品视频中文字幕| 欧美理论电影网| 日韩久久午夜影院| 亚洲xxx视频| 国模精品视频一区二区三区| 欧美日韩国产色视频| 国产精品久久久久久久久粉嫩av| 超碰97人人做人人爱少妇| 久久久久国产精品免费| 91av在线免费观看视频| 在线播放日韩av| 国产精品观看在线亚洲人成网| 亚洲一区av在线播放| 亚洲色图五月天| 亚洲精品综合精品自拍| 亚洲色图五月天| 国产在线视频一区| 欧美自拍大量在线观看| 91在线免费视频| 1769国产精品| 日韩精品亚洲元码| 亚洲免费成人av电影| 欧美一级大胆视频| 精品国产一区久久久| 欧美成人黄色小视频| 日韩中文视频免费在线观看| 久久精品国产成人精品|