This module provides a set of logger classes for different logging needs in Datatailr applications, including file, stdout, Flask, and cloud logging.


Table of Contents


Overview

The logging module provides a unified interface for logging messages to various destinations, such as files, stdout, Flask apps, and cloud providers (AWS, Azure, GCP). It supports different log levels and message formatting, and is designed to be easily integrated into Datatailr services and scripts.


Logger Classes & Usage Examples

BaseLogger

A base class for all loggers, providing common logging methods.

from dt.log import BaseLogger
import logging

logger = logging.getLogger("my_logger")
base_logger = BaseLogger(logger, level="INFO")
base_logger.info("user1", "This is an info message")
base_logger.error("user1", "This is an error message")

Logger (File Logger)

Logs messages to a rotating file in /opt/datatailr/var/log.

from dt.log import Logger

logger = Logger('my_app.log', level='INFO')
logger.info('user1', 'This is an info message')
logger.error('user1', 'This is an error message')

FlaskLogger

Integrates with a Flask app’s logger.

from dt.log import FlaskLogger
from flask import Flask

app = Flask(__name__)
logger = FlaskLogger(app)
logger.info('user1', 'Flask app started')

StdoutLogger

Logs messages to standard output (stdout).

from dt.log import StdoutLogger

logger = StdoutLogger()
logger.info('user1', 'This will print to stdout')
logger.error('user1', 'This is an error to stdout')

CloudLogger

Logs messages to a cloud provider’s logging service or to stdout if no provider is detected.

from dt.log import CloudLogger

logger = CloudLogger(log_group='/datatailr/apps', stream_name='server')
logger.info('user1', 'Cloud logging info message')

# For batch jobs:
cloud_logger = CloudLogger(log_group='/datatailr/batches', stream_name='my_batch', level='INFO')
cloud_logger.info('user1', 'Batch job started')

AuditLogger

Specialized logger for audit logs, using the cloud logger with a fixed log group.

from dt.log import AuditLogger

audit_logger = AuditLogger('job')
audit_logger.info('user1', 'Audit log entry')

FileLogger (Simple File Logger)

A simple file logger for direct file logging, with a customizable directory and filename.

from dt.log import FileLogger

logger = FileLogger(directory="/opt/datatailr/var/log/image_builder", filename="build_20240101.log")
logger.info("Build started")
logger.error("Build failed")

API Reference

BaseLogger

  • Constructor: BaseLogger(logger, level=None)

    • logger: logging.Logger instance.
    • level: Log level (e.g., "INFO").
  • Properties:

    • level: Current log level.
  • Methods:

    • set_level(level): Set log level.
    • raw_info(message): Log a raw info message.
    • debug(user, message): Log a debug message.
    • info(user, message): Log an info message.
    • warning(user, message): Log a warning message.
    • error(user, message): Log an error message.
    • critical(user, message): Log a critical message.

Logger

  • Constructor: Logger(filename, level=None)

    • filename: Log file name (saved in /opt/datatailr/var/log).
    • level: Log level.
  • Methods: Inherits all from BaseLogger.


FlaskLogger

  • Constructor: FlaskLogger(app, level=None)

    • app: Flask app instance.
    • level: Log level.
  • Methods: Inherits all from BaseLogger.


StdoutLogger

  • Constructor: StdoutLogger(level=None)

    • level: Log level.
  • Methods: Inherits all from BaseLogger.


CloudLogger

  • Constructor: CloudLogger(level=None, *, log_group=None, stream_name=None)

    • level: Log level.
    • log_group: Cloud log group (e.g., /datatailr/apps).
    • stream_name: Log stream name (e.g., app-name).
  • Methods: Inherits all from BaseLogger.


AuditLogger

  • Constructor: AuditLogger(stream_name)

    • stream_name: Log stream name.
  • Methods: Inherits all from CloudLogger.


FileLogger

  • Constructor: FileLogger(directory="", filename="", level="")

    • directory: Directory for log file (default: /opt/datatailr/var/log/).
    • filename: Log file name (default: dt_log.log).
    • level: Log level ("debug", "info", "warning", "error", "critical").
  • Methods:

    • info(message): Log info message.
    • warning(message): Log warning message.
    • error(message): Log error message.
    • critical(message): Log critical message.

Note:

  • All loggers support standard log levels: DEBUG, INFO, WARNING, ERROR, CRITICAL.
  • For loggers that require a user argument, it can be a string, a user object, or a request context.