You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by fo...@apache.org on 2017/12/06 08:47:00 UTC
incubator-airflow git commit: [AIRFLOW-1879] Handle ti log entirely
within ti
Repository: incubator-airflow
Updated Branches:
refs/heads/master 06b41fbe1 -> 301ce6b4f
[AIRFLOW-1879] Handle ti log entirely within ti
Previously logging was setup outside a
TaskInstance,
this puts everything inside. Also propery closes
the logging.
Closes #2837 from bolkedebruin/AIRFLOW-1879
Project: http://git-wip-us.apache.org/repos/asf/incubator-airflow/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-airflow/commit/301ce6b4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-airflow/tree/301ce6b4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-airflow/diff/301ce6b4
Branch: refs/heads/master
Commit: 301ce6b4f0da9d01734dd3a0360bff535a8acad5
Parents: 06b41fb
Author: Bolke de Bruin <bo...@xs4all.nl>
Authored: Wed Dec 6 09:46:53 2017 +0100
Committer: Fokko Driesprong <fo...@godatadriven.com>
Committed: Wed Dec 6 09:46:53 2017 +0100
----------------------------------------------------------------------
airflow/bin/cli.py | 17 +++--------------
airflow/models.py | 6 ++++++
airflow/utils/log/logging_mixin.py | 7 +++++--
3 files changed, 14 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-airflow/blob/301ce6b4/airflow/bin/cli.py
----------------------------------------------------------------------
diff --git a/airflow/bin/cli.py b/airflow/bin/cli.py
index c23b272..782e58d 100755
--- a/airflow/bin/cli.py
+++ b/airflow/bin/cli.py
@@ -362,15 +362,10 @@ def run(args, dag=None):
task = dag.get_task(task_id=args.task_id)
ti = TaskInstance(task, args.execution_date)
ti.refresh_from_db()
-
- log = logging.getLogger('airflow.task')
- if args.raw:
- log = logging.getLogger('airflow.task.raw')
-
- set_context(log, ti)
+ ti.init_run_context()
hostname = socket.getfqdn()
- log.info("Running on host %s", hostname)
+ log.info("Running %s on host %s", ti, hostname)
with redirect_stdout(log, logging.INFO), redirect_stderr(log, logging.WARN):
if args.local:
@@ -428,13 +423,7 @@ def run(args, dag=None):
if args.raw:
return
- # Force the log to flush. The flush is important because we
- # might subsequently read from the log to insert into S3 or
- # Google cloud storage. Explicitly close the handler is
- # needed in order to upload to remote storage services.
- for handler in log.handlers:
- handler.flush()
- handler.close()
+ logging.shutdown()
def task_failed_deps(args):
http://git-wip-us.apache.org/repos/asf/incubator-airflow/blob/301ce6b4/airflow/models.py
----------------------------------------------------------------------
diff --git a/airflow/models.py b/airflow/models.py
index 22cf9f0..5837363 100755
--- a/airflow/models.py
+++ b/airflow/models.py
@@ -1855,6 +1855,12 @@ class TaskInstance(Base, LoggingMixin):
TI.state == State.RUNNING
).count()
+ def init_run_context(self):
+ """
+ Sets the log context.
+ """
+ self._set_context(self)
+
class TaskFail(Base):
"""
http://git-wip-us.apache.org/repos/asf/incubator-airflow/blob/301ce6b4/airflow/utils/log/logging_mixin.py
----------------------------------------------------------------------
diff --git a/airflow/utils/log/logging_mixin.py b/airflow/utils/log/logging_mixin.py
index 892fae5..03437bf 100644
--- a/airflow/utils/log/logging_mixin.py
+++ b/airflow/utils/log/logging_mixin.py
@@ -30,8 +30,7 @@ class LoggingMixin(object):
Convenience super-class to have a logger configured with the class name
"""
def __init__(self, context=None):
- if context is not None:
- set_context(self.log, context)
+ self._set_context(context)
# We want to deprecate the logger property in Airflow 2.0
# The log property is the de facto standard in most programming languages
@@ -56,6 +55,10 @@ class LoggingMixin(object):
)
return self._log
+ def _set_context(self, context):
+ if context is not None:
+ set_context(self.log, context)
+
class StreamLogWriter(object):
encoding = False