Log Default¶
LogDefault is the built-in log provider. It supports file logging, console logging, or both, with simple text or JSON output format.
This is the provider used when no log is explicitly configured in Config.
Parameters¶
| Parameter | Values | Default | Description |
|---|---|---|---|
level |
DEBUG, INFO, WARNING, ERROR |
INFO |
Minimum log level |
output |
file, console, both |
console |
Where logs are written |
path |
Any file path | .output/flow.log |
Log file location (used with file or both) |
format |
simple, json |
simple |
Message format |
Basic example¶
Console output with simple format:
from dotflow import Config, DotFlow, action
from dotflow.providers import LogDefault
@action
def extract():
return {"data": "fetched"}
@action
def transform(previous_context):
return {"result": previous_context.storage}
def main():
log = LogDefault(
level="INFO",
output="console",
format="simple",
)
workflow = DotFlow(config=Config(log=log))
workflow.task.add(step=extract)
workflow.task.add(step=transform)
workflow.start()
return workflow
if __name__ == "__main__":
main()
Output:
2026-04-07 14:31:07 - INFO [dotflow]: ID abc-123 - 01ARZ3NDEKTSV4RRFFQ69G5FAV - Not started
2026-04-07 14:31:07 - INFO [dotflow]: ID abc-123 - 01ARZ3NDEKTSV4RRFFQ69G5FAV - In progress
2026-04-07 14:31:07 - INFO [dotflow]: ID abc-123 - 01ARZ3NDEKTSV4RRFFQ69G5FAV - Completed
JSON format¶
JSON output to both console and file — useful for log aggregation tools (ELK, Loki, Datadog).
from dotflow import Config, DotFlow, action
from dotflow.providers import LogDefault
@action
def extract():
return {"data": "fetched"}
@action
def transform(previous_context):
return {"result": previous_context.storage}
def main():
log = LogDefault(
level="DEBUG",
output="both",
path=".output/pipeline.log",
format="json",
)
workflow = DotFlow(config=Config(log=log))
workflow.task.add(step=extract)
workflow.task.add(step=transform)
workflow.start()
return workflow
if __name__ == "__main__":
main()
Output:
{"timestamp": "2026-04-07T19:34:24.626Z", "level": "INFO", "workflow_id": "abc-123", "task_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV", "status": "Completed", "duration": 0.0001}
Log levels¶
| Level | Logged when |
|---|---|
INFO |
Task status changes (Not started, In progress, Completed) |
WARNING |
Task status changes to Retry |
ERROR |
Task status changes to Failed (includes traceback) |
DEBUG |
Available for custom use |