randr97 commented on a change in pull request #9331:
URL: https://github.com/apache/airflow/pull/9331#discussion_r441738149
##########
File path: airflow/www/views.py
##########
@@ -679,62 +680,53 @@ def get_logs_with_metadata(self, session=None):
return response
- logger = logging.getLogger('airflow.task')
- task_log_reader = conf.get('logging', 'task_log_reader')
- handler = next((handler for handler in logger.handlers
- if handler.name == task_log_reader), None)
+ task_log_reader = TaskLogReader()
+ if not task_log_reader.is_supported:
+ return jsonify(
+ messaege="Task log handler does not support read logs.",
+ errur=True,
+ metadata={
+ "end_of_log": True
+ }
+ )
ti = session.query(models.TaskInstance).filter(
models.TaskInstance.dag_id == dag_id,
models.TaskInstance.task_id == task_id,
models.TaskInstance.execution_date == dttm).first()
- def _get_logs_with_metadata(try_number, metadata):
- if ti is None:
- logs = ["*** Task instance did not exist in the DB\n"]
- metadata['end_of_log'] = True
- else:
- logs, metadatas = handler.read(ti, try_number,
metadata=metadata)
- metadata = metadatas[0]
- return logs, metadata
+ if ti is None:
+ return jsonify(
+ message="*** Task instance did not exist in the DB\n",
+ error=True,
+ metadata={
+ "end_of_log": True
+ }
+ )
try:
- if ti is not None:
- dag = dagbag.get_dag(dag_id)
- if dag:
- ti.task = dag.get_task(ti.task_id)
+ dag = dagbag.get_dag(dag_id)
+ if dag:
+ ti.task = dag.get_task(ti.task_id)
+
if response_format == 'json':
- logs, metadata = _get_logs_with_metadata(try_number, metadata)
+ logs, metadata = task_log_reader.read_log_chunks(ti,
try_number, metadata)
message = logs[0] if try_number is not None else logs
return jsonify(message=message, metadata=metadata)
- filename_template = conf.get('logging', 'LOG_FILENAME_TEMPLATE')
- attachment_filename = render_log_filename(
- ti=ti,
- try_number="all" if try_number is None else try_number,
- filename_template=filename_template)
metadata['download_logs'] = True
-
- def _generate_log_stream(try_number, metadata):
- if try_number is None and ti is not None:
- next_try = ti.next_try_number
- try_numbers = list(range(1, next_try))
- else:
- try_numbers = [try_number]
- for try_number in try_numbers:
- metadata.pop('end_of_log', None)
- metadata.pop('max_offset', None)
- metadata.pop('offset', None)
- while 'end_of_log' not in metadata or not
metadata['end_of_log']:
- logs, metadata = _get_logs_with_metadata(try_number,
metadata)
- yield "\n".join(logs) + "\n"
- return Response(_generate_log_stream(try_number, metadata),
- mimetype="text/plain",
- headers={"Content-Disposition": "attachment;
filename={}".format(
- attachment_filename)})
+ attachment_filename = task_log_reader.render_log_filename(ti,
try_number)
+ log_stream = task_log_reader.read_log_stream(ti, try_number,
metadata)
+ return Response(
+ response=log_stream,
+ mimetype="text/plain",
+ headers={
+ "Content-Disposition": f"attachment;
filename={attachment_filename}"
+ })
except AttributeError as e:
- error_message = ["Task log handler {} does not support read
logs.\n{}\n"
- .format(task_log_reader, str(e))]
+ error_message = [
+ "Task log handler does not support read
logs.\n{}\n".format(str(e))
Review comment:
```suggestion
f"Task log handler does not support read logs.\n{str(e)}\n"
```
IDK jus my thought, f strings are a lil more optimised.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]