Logger
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.
Updated about 16 hours ago