""" structlog包特色: 一、容易記錄 二、數據綁定 三、強大的流水線 四、格式化 五、輸出 """
""" 一、簡單的輸出 二、構建上下文,能夠默認綁定輸出一些必要的信息 三、在運行時操做日誌條目,爲每一個事件字典添加時間戳 >>> import datetime >>> def timestamper(_, __, event_dict): ... event_dict["time"] = datetime.datetime.now().isoformat() ... return event_dict >>> structlog.configure(processors=[timestamper, structlog.processors.KeyValueRenderer()]) >>> structlog.get_logger().msg("hi") event='hi' time='2018-01-21T09:37:36.976816' 四、渲染:以json形式輸出字典 五、structlog和標準庫logging 使用structlog.get_logger()就能夠像以前log調用log包那樣使用了 """
""" 本身能夠經過:wrap_logger()函數進行自定義綁定 """
""" 配置: 必須依賴於配置 ----> structlog.get_logger() 使用初始化 -----> structlog.configure() """
""" 處理器 structlog附帶一些標準的庫特定處理器: render_to_log_kwargs() : 將事件字典呈現爲關鍵字參數logging.log(),將除事件字段以外的全部內容附加到額外參數。若是要徹底呈現日誌條目,這很是有用logging。 filter_by_level(): 根據標準庫日誌記錄的配置檢查日誌條目的日誌級別。低於閾值的日誌條目將被靜默刪除。將它放在處理鏈的開頭,以免昂貴的操做首先發生。 add_logger_name():將記錄器的名稱添加到密鑰下的事件字典中logger。 add_log_level():將日誌級別添加到密鑰下的事件字典中level。 add_log_level_number():將日誌級別編號添加到密鑰下的事件字典中level_number。日誌級別編號映射到日誌級別名稱。Python stdlib使用它們來過濾邏輯。這會添加相同的數字,以便用戶能夠利用相似的過濾 level in ("warning", "error", "critical") level_number >= 30 名稱到數字的映射是在 _NAME_TO_LEVEL """
""" structlog包 structlog.get_logger(* args,** initial_values ) args - 未經修改傳遞給記錄器工廠的可選位置參數。所以,它取決於工廠的意思。 initial_values - 用於預填充上下文的值。 structlog.wrap_logger(logger,processors = None,wrapper_class = None,context_class = None,cache_logger_on_first_use = None,logger_factory_args = None,** initial_values ) 爲任意記錄器建立新的綁定記錄器。可使用設置processor,wrapper_class和context_class的默認值configure()。若是您在此處設置的屬性,configure()調用都沒有對影響各自的屬性。 換句話說:選擇性覆蓋默認值同時保留一些 是可能的。 initial_values - 用於預填充上下文的值。 logger_factory_args(tuple) - *logger_factory_args若是不是None,則未經修改的值傳遞 給記錄器工廠。 structlog.configure(processors = None,wrapper_class = None,context_class = None,logger_factory = None,cache_logger_on_first_use = None ) 配置全局默認值,若是wrap_logger()沒有參數調用它們,則使用它們 調用一次以後,is_configured()開始返回true processors : 處理器列表 wrapper_class : 用於包裝記錄器 context_class : 用於內部上下文保持的類 logger_factory : 要調用工廠來建立一個應該被包裝的新記錄器 cache_logger_on_first_use (bool) : wrap_logger不會返回一個實際的包裝記錄器,而是一個在第一次使用時組裝一個的代理。若是此選項設置爲True,則會緩存此組裝的記錄器 structlog.reset_defaults():將全局默認值重置爲內置默認值 structlog.is_configured() 返回是否structlog已配置。若是False,structlog運行內置默認值。 class structlog.PrintLogger(file = None )將事件打印到文件中。 """
複製代碼