Logging¶
Logger configuration is integrated into outflow to facilitate logging from the different plugins. By default a simple configuration and formatter is loaded, you can override them in your config.yml file.
Logging from tasks¶
The logger object in the logging module of outflow core is already set up with all the registered plugins:
#inside a tasks.py file
from outflow.core.logging import logger
@as_task
def MyTask():
logger.info("Hello from MyTask")
result :
2021-09-30 14:17:43,459 - my_project.my_plugin - tasks.py:15 - INFO - Hello from MyTask
NOTE
Since the outflow logger looks at the calling module to route the logs, you tasks must be imported using the namespace convention and not with an absolute import:
#inside a commands.py file
#do this
from my_project.my_plugin import MyTask
#not this
from plugins.my_plugin.my_project.my_plugin.tasks import MyTask
Configuring your logger¶
The syntax of the logging section of the config.yml file is the same as a DictConfig from the logging module. In it, you can configure the level, handlers etc.. of the logs. (see python documentation about logging configuration for more details)
logging:
loggers:
matplotlib:
level: WARNING
handlers: ["console"]
my_plugin:
level: DEBUG
handlers: ["console"]
my_another_plugin:
level: ERROR
handlers: ["console"]
Log to a file¶
To log to a file, you can use the handler “file” in your configuration :
logging:
loggers:
"": # root logger, will log everything to a file
level: DEBUG
handlers: ["file"]