airflow.providers.google.cloud.log.stackdriver_task_handler

与 Stackdriver 集成的处理程序。

模块内容

StackdriverTaskHandler

直接调用 Stackdriver 日志 API 的处理程序。

属性

DEFAULT_LOGGER_NAME

airflow.providers.google.cloud.log.stackdriver_task_handler.DEFAULT_LOGGER_NAME = 'airflow'[源代码]
class airflow.providers.google.cloud.log.stackdriver_task_handler.StackdriverTaskHandler(gcp_key_path=None, scopes=_DEFAULT_SCOPESS, name=NOTSET, transport=BackgroundThreadTransport, resource=_GLOBAL_RESOURCE, labels=None, gcp_log_name=DEFAULT_LOGGER_NAME)[源代码]

基类:logging.Handler

直接调用 Stackdriver 日志 API 的处理程序。

这是一个 Python 标准的 logging 处理程序,可用于将 Python 标准日志消息直接路由到 Stackdriver Logging API。

它也可以用于保存执行任务的日志。为此,您应该将其设置为名称为“tasks”的处理程序。在这种情况下,它也将用于读取日志以便在 Web UI 中显示。

此处理程序支持异步和同步传输。

参数
  • gcp_key_path (str | None) – Google Cloud 凭据 JSON 文件的路径。如果省略,将使用基于应用程序默认凭据的授权。

  • scopes (collections.abc.Collection[str] | None) – 凭据的 OAuth 范围,

  • name (str | airflow.utils.types.ArgNotSet) – Stackdriver Logging 中自定义日志的名称。默认为“airflow”。Python 记录器的名称将表示在 python_logger 字段中。

  • transport (type[google.cloud.logging.handlers.transports.Transport]) – 用于创建新传输对象的类。它应该从基本 google.cloud.logging.handlers.Transport 类型扩展并实现 :meth`google.cloud.logging.handlers.Transport.send`。默认为 google.cloud.logging.handlers.BackgroundThreadTransport。另一个选项是 google.cloud.logging.handlers.SyncTransport

  • resource (google.cloud.logging.Resource) – (可选)条目的受监控资源,默认为全局资源类型。

  • labels (dict[str, str] | None) – (可选)条目的标签映射。

property log_name[源代码]

返回日志名称。

LABEL_TASK_ID = 'task_id'[源代码]
LABEL_DAG_ID = 'dag_id'[源代码]
LABEL_LOGICAL_DATE[源代码]
LABEL_TRY_NUMBER = 'try_number'[源代码]
LOG_VIEWER_BASE_URL = 'https://console.cloud.google.com/logs/viewer'[源代码]
LOG_NAME = 'Google Stackdriver'[源代码]
trigger_supported = True[源代码]
trigger_should_queue = False[源代码]
trigger_should_wrap = False[源代码]
trigger_send_end_marker = False[来源]
emit(record)[来源]

实际记录指定的日志记录。

参数

record (logging.LogRecord) – 要记录的记录。

set_context(task_instance)[来源]

配置记录器以添加有关当前任务的信息。

参数

task_instance (airflow.models.TaskInstance) – 当前执行的任务

read(task_instance, try_number=None, metadata=None)[来源]

从 Stackdriver 日志读取给定任务实例的日志。

参数
  • task_instance (airflow.models.TaskInstance) – 任务实例对象

  • try_number (int | None) – 要从中读取日志的任务实例尝试次数。 如果为 None,则返回所有日志

  • metadata (dict | None) – 日志元数据。它用于流式日志读取和自动跟踪。

返回

一个元组(包含(一个元素元组,其中包含两个元素元组 - 主机名和日志)的列表和元数据列表)

返回类型

tuple[list[tuple[tuple[str, str]]], list[dict[str, str | bool]]]

get_external_log_url(task_instance, try_number)[来源]

为外部日志收集服务创建地址。

参数
  • task_instance (airflow.models.TaskInstance) – 任务实例对象

  • try_number (int) – 要从中读取日志的任务实例尝试次数

返回

指向外部日志收集服务的 URL

返回类型

str

close()[来源]

清理处理程序使用的任何资源。

此版本从内部处理程序映射 _handlers 中删除处理程序,该映射用于按名称查找处理程序。子类应确保从重写的 close() 方法中调用此方法。

此条目是否有帮助?