Logging Configuration

LiveF1 provides built-in logging capabilities through its logger module. The package uses Python’s standard logging module with pre-configured formatters and handlers.

Basic Setup

The logging system is automatically configured when you import the package. By default, it:

  • Logs to both console and file (livef1.log)

  • Sets INFO as the default log level

  • Uses different formats for console and file output

Configuration Options

Log Levels

You can adjust the logging level using the set_log_level function:

from livef1.utils.logger import set_log_level
import logging

# Set using string
set_log_level('DEBUG')

# Or using logging constants
set_log_level(logging.DEBUG)
Available log levels:
  • DEBUG: Detailed information for diagnosing problems

  • INFO: Confirmation that things are working (default)

  • WARNING: Indication that something unexpected happened

  • ERROR: More serious problem

  • CRITICAL: Program may not be able to continue

Output Formats

Console output format:

HH:MM:SS - message

File output format:

YYYY-MM-DD HH:MM:SS - logger_name - level - message

Custom Handlers

You can add your own handlers to the logger:

from livef1.utils.logger import logger
import logging

# Create custom handler
custom_handler = logging.StreamHandler()
custom_handler.setFormatter(logging.Formatter('%(asctime)s - %(message)s'))
logger.addHandler(custom_handler)

Example Usage

from livef1.adapters.realtime_client import RealF1Client
from livef1.utils.logger import logger, set_log_level
import logging

# Enable debug logging
set_log_level('DEBUG')

# Initialize client
client = RealF1Client(topics=["CarData.z"])

@client.callback("logging_example")
async def handle_data(records):
    logger.debug(f"Received {len(records)} records")
    logger.info("Processing new data batch")

    try:
        # Process records
        process_records(records)
    except Exception as e:
        logger.error(f"Error processing records: {e}")