""" 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 )将事件打印到文件中。 """
复制代码