:py:mod:`airflow.providers.microsoft.azure.log.wasb_task_handler`
=================================================================

.. py:module:: airflow.providers.microsoft.azure.log.wasb_task_handler


Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.microsoft.azure.log.wasb_task_handler.WasbTaskHandler




.. py:class:: WasbTaskHandler(base_log_folder, wasb_log_folder, wasb_container, delete_local_copy, *, filename_template = None)

   Bases: :py:obj:`airflow.utils.log.file_task_handler.FileTaskHandler`, :py:obj:`airflow.utils.log.logging_mixin.LoggingMixin`

   WasbTaskHandler is a python log handler that handles and reads
   task instance logs. It extends airflow FileTaskHandler and
   uploads to and reads from Wasb remote storage.

   .. py:method:: hook(self)

      Returns WasbHook.


   .. py:method:: set_context(self, ti)

      Provide task_instance context to airflow task handler.

      :param ti: task instance object


   .. py:method:: close(self)

      Close and upload local log file to remote storage Wasb.


   .. py:method:: wasb_log_exists(self, remote_log_location)

      Check if remote_log_location exists in remote storage

      :param remote_log_location: log's location in remote storage
      :return: True if location exists else False


   .. py:method:: wasb_read(self, remote_log_location, return_error = False)

      Returns the log found at the remote_log_location. Returns '' if no
      logs are found or there is an error.

      :param remote_log_location: the log's location in remote storage
      :param return_error: if True, returns a string error message if an
          error occurs. Otherwise returns '' when an error occurs.


   .. py:method:: wasb_write(self, log, remote_log_location, append = True)

      Writes the log to the remote_log_location. Fails silently if no hook
      was created.

      :param log: the log to write to the remote_log_location
      :param remote_log_location: the log's location in remote storage
      :param append: if False, any existing log file is overwritten. If True,
          the new log is appended to any existing logs.



