airflow.providers.elasticsearch.log.es_task_handler
¶
Module Contents¶
Classes¶
ElasticsearchTaskHandler is a python log handler that |
Attributes¶
- class airflow.providers.elasticsearch.log.es_task_handler.ElasticsearchTaskHandler(base_log_folder, filename_template, log_id_template, end_of_log_mark, write_stdout, json_format, json_fields, host_field='host', offset_field='offset', host='localhost:9200', frontend='localhost:5601', es_kwargs=conf.getsection('elasticsearch_configs'))[source]¶
Bases:
airflow.utils.log.file_task_handler.FileTaskHandler
,airflow.utils.log.logging_mixin.ExternalLoggingMixin
,airflow.utils.log.logging_mixin.LoggingMixin
ElasticsearchTaskHandler is a python log handler that reads logs from Elasticsearch. Note that Airflow does not handle the indexing of logs into Elasticsearch. Instead, Airflow flushes logs into local files. Additional software setup is required to index the logs into Elasticsearch, such as using Filebeat and Logstash. To efficiently query and sort Elasticsearch results, this handler assumes each log message has a field log_id consists of ti primary keys: log_id = {dag_id}-{task_id}-{execution_date}-{try_number} Log messages with specific log_id are sorted based on offset, which is a unique integer indicates log message's order. Timestamps here are unreliable because multiple log messages might have the same timestamp.
- es_read(self, log_id, offset, metadata)[source]¶
Returns the logs matching log_id in Elasticsearch and next offset. Returns '' if no log is found or there was an error.
- emit(self, record)[source]¶
Do whatever it takes to actually log the specified logging record.
This version is intended to be implemented by subclasses and so raises a NotImplementedError.
- set_context(self, ti)[source]¶
Provide task_instance context to airflow task handler.
- Parameters
ti (airflow.models.TaskInstance) -- task instance object
- close(self)[source]¶
Tidy up any resources used by the handler.
This version removes the handler from an internal map of handlers, _handlers, which is used for handler lookup by name. Subclasses should ensure that this gets called from overridden close() methods.