This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 82ba645abb Better explanation on how to log from tasks (#30746)
82ba645abb is described below
commit 82ba645abb46c12f6b81e4df2af94abe2fc03fea
Author: Jarek Potiuk <[email protected]>
AuthorDate: Thu Apr 20 02:18:44 2023 +0200
Better explanation on how to log from tasks (#30746)
* Better explanation on how to log from tasks
After Daniel's explanation this should provide a better description
on how to log from tasks.
Co-authored-by: Daniel Standish
<[email protected]>
Co-authored-by: Niko Oliveira <[email protected]>
---
.../logging-monitoring/logging-tasks.rst | 36 ++++++++++------------
1 file changed, 16 insertions(+), 20 deletions(-)
diff --git
a/docs/apache-airflow/administration-and-deployment/logging-monitoring/logging-tasks.rst
b/docs/apache-airflow/administration-and-deployment/logging-monitoring/logging-tasks.rst
index b43b858ac9..16b2b58e98 100644
---
a/docs/apache-airflow/administration-and-deployment/logging-monitoring/logging-tasks.rst
+++
b/docs/apache-airflow/administration-and-deployment/logging-monitoring/logging-tasks.rst
@@ -57,34 +57,30 @@ In addition, you can supply a remote location to store
current logs and backups.
Writing to task logs from your code
-----------------------------------
-Most operators will write logs to the task log automatically. This is because
they derive from they
-have a ``log`` logger that you can use to write to the task log.
-This logger is created and configured by
:class:`~airflow.utils.log.LoggingMixin` that all classic
-operators derive from.
+Airflow uses standard the Python `logging
<https://docs.python.org/3/library/logging.html>`_ framework to
+write logs, and for the duration of a task, the root logger is configured to
write to the task's log.
-If you want to log to the task log from a custom class of yours you can do the
following:
+Most operators will write logs to the task log automatically. This is because
they
+have a ``log`` logger that you can use to write to the task log.
+This logger is created and configured by
:class:`~airflow.utils.log.LoggingMixin` that all
+operators derive from. But also due to the root logger handling, any standard
logger (using default settings) that
+propagates logging to the root will also write to the task log.
-* make sure your class extends from :class:`~airflow.utils.log.LoggingMixin`
-* just use standard print statements to print to stdout
-* use the ``airflow.task`` logger that is configured by default or create
logger where ``airflow.task`` is
- the parent logger
+So if you want to log to the task log from custom code of yours you can do any
of the following:
-The last option is the most flexible, as you can create your own logger and
configure it as you see fit
-via advanced configuration options below.
+* Log with the ``self.log`` logger from BaseOperator
+* Use standard ``print`` statements to print to ``stdout`` (not recommended,
but in some cases it can be useful)
+* Use the standard logger approach of creating a logger using the Python
module name
+ and using it to write to the task log
-Using task logger directly:
+This is the usual way loggers are used directly in Python code:
.. code-block:: python
- logger = logging.getLogger("airflow.task")
- logger.info("This is a log message")
-
-Using child logger of task logger:
+ import logging
-.. code-block:: python
-
- child_logger = logging.getLogger("airflow.task.child")
- child_logger.info("This is a child log message")
+ logger = logging.getLogger(__name__)
+ logger.info("This is a log message")
Interleaving of logs