Source
yaml
id: loguru
namespace: company.team
inputs:
- id: nr_logs
type: INT
defaults: 100
tasks:
- id: reproducer
type: io.kestra.plugin.scripts.python.Script
warningOnStdErr: false
taskRunner:
type: io.kestra.plugin.scripts.runner.docker.Docker
containerImage: ghcr.io/kestra-io/pydata:latest
script: >
from loguru import logger from faker import Faker import time import sys
logger.remove() logger.add(sys.stdout, level="INFO")
logger.add(sys.stderr, level="WARNING")
def generate_logs(fake, num_logs):
logger.debug("This message will not show up as the log level is set to INFO")
logger.warning("Starting to generate log messages")
for _ in range(num_logs):
log_message = fake.sentence()
logger.info(log_message)
time.sleep(0.01)
logger.warning("Finished generating log messages")
if __name__ == "__main__":
faker_ = Faker()
generate_logs(faker_, int("{{ inputs.nr_logs }}"))
About this blueprint
Python
This flow demonstrates how to configure logging in a Python script using Loguru. The Script
task will generate, by default, 100 random log messages, but this number of logs can be changed at runtime using the input parameter nr_logs
.
- The
warningOnStdErr
property is set tofalse
to prevent theScript
task from failing when thelogger.warning
method is used. - The
containerImage
property is set toghcr.io/kestra-io/pydata:latest
to use thepydata
Docker image that contains theloguru
andfaker
libraries. - The
script
property contains the Python code that will be executed by theScript
task. The log level is set toINFO
in theScript
task. Therefore, thelogger.debug
message will NOT show up in the logs. Thelogger.warning
messages will be translated to WARN-level logs in Kestra. Thelogger.info
messages will be translated to INFO-level logs in Kestra.
More Related Blueprints