Skip to content

Logger Reference

kevinbotlib.logger

kevinbotlib.logger.FileLoggerConfig dataclass

Configuration for file-based logging

directory = field(default_factory=LoggerDirectories.get_logger_directory) class-attribute instance-attribute

Directory to store log files. Defaults to the user's data directory.

rotation_size = '150MB' class-attribute instance-attribute

Rotation size for the log file. Defaults to 150MB.

level = None class-attribute instance-attribute

Logging level for the log file. Defaults to the global logging level.

kevinbotlib.logger.Level

Bases: Enum

Logging levels

TRACE = _internal_logger.level('TRACE') class-attribute instance-attribute

Trace level logging - used for more detailed info than DEBUG - level no. 5

DEBUG = _internal_logger.level('DEBUG') class-attribute instance-attribute

Debug level logging - used for debugging info - level no. 10

INFO = _internal_logger.level('INFO') class-attribute instance-attribute

Debug level logging - used for regular info - level no. 20

WARNING = _internal_logger.level('WARNING') class-attribute instance-attribute

Warnng level logging - used for warnings and recommended fixes - level no. 30

ERROR = _internal_logger.level('ERROR') class-attribute instance-attribute

Error level logging - used for non-critical and recoverable errors - level no. 40

SECURITY = _internal_logger.level('SECURITY', 45, '<bg 202><bold>') class-attribute instance-attribute

Security level logging - used for non-application-breaking secutiry issues/threats - level no. 45

CRITICAL = _internal_logger.level('CRITICAL') class-attribute instance-attribute

Error level logging - used for critical and non-recoverable errors - level no. 50

kevinbotlib.logger.Logger

config property

Get the current logger configuration.

Returns:

Type Description
LoggerConfiguration | None

Current global logger configuration.

loguru_logger property

Get the internal loguru logger instance.

Returns:

Type Description
Logger

Loguru logger.

__init__()

Create a logger instance

suppress() classmethod

Content manager to suppress all logging.

configure(config)

Configures file-based logging with rotation and cleanup.

Parameters:

Name Type Description Default
config LoggerConfiguration

Logger configuration.

required

add_hook(hook)

Add a new serialized logger write hook.

Parameters:

Name Type Description Default
hook Callable[[Message], None]

Logger write hook.

required

add_hook_ansi(hook)

Add a new ANSI logger write hook.

Parameters:

Name Type Description Default
hook Callable[[str], None]

Logger write hook.

required

log(level, message, opts=None)

Log a message with the specified level and options.

Parameters:

Name Type Description Default
level Level

Logger level

required
message str | BaseException

Message to log. Can be a string or an exception.

required
opts LoggerWriteOpts | None

Logger options.

None

trace(message)

Log a trace message.

Parameters:

Name Type Description Default
message str

Message

required

debug(message)

Log a debug message.

Parameters:

Name Type Description Default
message str

Message

required

info(message)

Log an info message.

Parameters:

Name Type Description Default
message str

Message

required

warning(message)

Log a warning message.

Parameters:

Name Type Description Default
message str

Message

required

warn(message)

Log a warning message. Deprecated. Use Logger.warning() instead.

Parameters:

Name Type Description Default
message str

Message

required

error(message)

Log an error message.

Parameters:

Name Type Description Default
message str

Message

required

security(message)

Log a security message.

Parameters:

Name Type Description Default
message str

Message

required

kevinbotlib.logger.LoggerConfiguration dataclass

Configuration for the logger

level = Level.INFO class-attribute instance-attribute

Global logging level. Defaults to INFO.

enable_stderr_logger = True class-attribute instance-attribute

Enable logging to stderr. Defaults to True.

file_logger = None class-attribute instance-attribute

File-based logging configuration. Defaults to None.

kevinbotlib.logger.LoggerDirectories

get_logger_directory(*, ensure_exists=True) staticmethod

Returns the log directory path and ensures its existence if needed.

Parameters:

Name Type Description Default
ensure_exists bool

Create the directory if it doesn't exist.

True

Returns:

Type Description
str

The log directory path.

cleanup_logs(directory, max_size_mb=500) staticmethod

Deletes oldest log files if the total log directory exceeds max_size_mb.

Parameters:

Name Type Description Default
directory str

Log directory path.

required
max_size_mb int

Maximum size of the log directory in MB.

500

get_directory_size(directory) staticmethod

Returns the size of the directory in MB.

Parameters:

Name Type Description Default
directory str

Directory to measure size.

required

Returns:

Type Description
float

Directory size in MB.

kevinbotlib.logger.LoggerWriteOpts dataclass

Options for writing to the logger

depth = 1 class-attribute instance-attribute

Logger depth. Used to determine the statement that triggered the log. Defaults to 1.

colors = True class-attribute instance-attribute

Enable colorized output. Defaults to True.

ansi = True class-attribute instance-attribute

Enable ANSI escape codes. Defaults to True.

exception = False class-attribute instance-attribute

Exception to send to the logger. Defaults to False.

kevinbotlib.logger.StreamRedirector

Bases: IO

Redirect a stream to logging

__init__(logger, level=Level.INFO)

Initialize the log stream redirector.

Parameters:

Name Type Description Default
logger Logger

Logger to redirect the stream to.

required
level Level

Level to log at.

INFO

kevinbotlib.remotelog

kevinbotlib.remotelog.ANSILogSender

Class to send ANSI-formatted log entries over Redis Pub/Sub

kevinbotlib.remotelog.ANSILogReceiver

Class to receive ANSI-formatted log entries over Redis Pub/Sub

kevinbotlib.logger.downloader

kevinbotlib.logger.downloader.RemoteLogDownloader

Tool for downloading logs from a remote host using SFTP.

connect_with_password(host, username, password, port=22, missing_host_key_policy=default_missing_host_key_policy)

Connect to a remote host using a password.

connect_with_key(host, username, key, port=22, missing_host_key_policy=default_missing_host_key_policy)

Connect to a remote host using a Paramiko RSA key.

kevinbotlib.logger.parser

kevinbotlib.logger.parser.LogEntry dataclass

Class representing a single log entry.

timestamp instance-attribute

Timestamp of the log entry.

modname instance-attribute

Module name of the log entry.

function instance-attribute

Function name of the log entry.

line instance-attribute

Line of code where the log entry was generated.

level_no instance-attribute

Log level number.

level_name instance-attribute

Log level name.

level_icon instance-attribute

Log level icon.

message instance-attribute

Messages logged.

kevinbotlib.logger.parser.Log

Bases: list

Class representing a list of LogEntry instances.

__init__(entries=None)

Create a new log object.

Parameters:

Name Type Description Default
entries list[LogEntry] | None

List of LogEntry instances. Defaults to None.

None

append(item)

Append a new LogEntry to the log.

Parameters:

Name Type Description Default
item LogEntry

New LogEntry to append.

required

extend(items)

Extend the log with a list of LogEntry instances.

Parameters:

Name Type Description Default
items list[LogEntry] | Log

List is of LogEntry instances.

required

insert(index, item)

Insert a new LogEntry into the log at the specified index.

Parameters:

Name Type Description Default
index int

Index to insert the LogEntry at.

required
item LogEntry

LogEntry to insert.

required

kevinbotlib.logger.parser.LogParser

Class for parsing log data.

parse(data) staticmethod

Parse raw log file data into a Log object.

Parameters:

Name Type Description Default
data str

Log file data.

required

Returns: Log object.