DEV Community

ESTROSEC
ESTROSEC

Posted on

I Built a Custom Python Logger Module without OOP (Console, File & DB Logging)

Table of Contents


Overview

This project is a custom logging module built from scratch in Python using Procedural programming.
It provides a structured, extensible, and lightweight way to capture, format, and store log messages across multiple output formats (console, file, and database).


Features

Key highlights of ESTROSEC’s Python Logger:

  • Multi-Type Logging β€” TRACE, DEBUG, INFO, SUCCESS, WARNING, ERROR, FATAL
  • Multi-Level Logging β€” ALL, HIGH, MEDIUM, LOW
  • Multi-Output Logging β€” Console, File, SQLite Database
  • Named Loggers β€” Create multiple loggers with custom names/categories
  • Configurable File Logging β€” Choose custom file paths for .log files
  • Toggleable Outputs β€” Enable/disable console, file, or DB logging dynamically
  • Seamless Procedural Integration β€” Designed for easy integration into Procedural-based projects
  • Lightweight & Reusable β€” Plug-and-play across Python projects

Showcase

Console Logging

  • Clean, modern formatting with coloured output
  • Format: [LoggerName] [Timestamp] [Level] Message

Console Logging

File Logging

  • Same format as console logging (no colours)
  • Stored in .log files for persistence

File Logging

Database Logging (SQLite3)

  • Logs stored in a structured SQLite database
  • Data separated into columns for easy querying & analysis
  • Current limitation: DB file stored in a fixed location (configurable in future roadmap)

Database Logging


Getting Started

1. Download the Code

Download the latest release to get the logger.py module.

2. Add to Your Project

Place the logger.py file in your project directory:

Your-Project/
 β”œβ”€ main.py
 └─ logger.py
🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to 🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to

3. Import the Logger

import logger
🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to 🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to

Usage

Create a Logger

log = logger.create_logger("MyLogger")
🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to 🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to

Initialize the Logger

logger.initialize_logger(log, True, True)
🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to 🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to

Console Logging

logger.fatal(log, "Testing Fatal Log Message %s %d %f" % ("Testing String Concat", 5, 5.5))
logger.error(log, "Testing Error Log Message %s %d %f" % ("Testing String Concat", 5, 5.5))
logger.warning(log, "Testing Warning Log Message %s %d %f" % ("Testing String Concat", 5, 5.5))
logger.success(log, "Testing Success Log Message %s %d %f" % ("Testing String Concat", 5, 5.5))
logger.information(log, "Testing Information Log Message %s %d %f" % ("Testing String Concat", 5, 5.5))
logger.debug(log, "Testing Debug Log Message %s %d %f" % ("Testing String Concat", 5, 5.5))
logger.trace(log, "Testing Trace Log Message %s %d %f" % ("Testing String Concat", 5, 5.5))
🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to 🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to

Enable File Logging

log.set_toggle_file_logging(True)
🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to 🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to

Enable Database Logging

logger.set_toggle_file_logging(log, True)
🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to 🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to

Set File Path for Logs

logger.set_file_path(log, "C:\\Users\\YourName\\logs")
🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to 🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to

Control Log Levels

Available options:

  • ALL β€” Logs all message types
  • HIGH β€” Logs FATAL, ERROR, WARNING, SUCCESS
  • MEDIUM β€” Logs FATAL, ERROR, WARNING
  • LOW β€” Logs FATAL, ERROR
logger.set_log_level(log, LogLevel.LOW)
🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to 🌐 I Built a Custom Python Logger Module without OOP (Console, File & DB Logging) - DEV CommunityDropdown menuDropdown menuNavigation menuSearchSearchCloseMore...Copy linkEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen modeEnter fullscreen modeExit fullscreen mode - dev.to

Tech Stack

  • Language: Python 3
  • Modules: inspect, os, enum, datetime, sqlite3
  • Tools: PyCharm, DataGrip, GitHub, Git

Roadmap

  • SQLite Logging
  • MySQL Logging
  • Multi-threaded Logging
  • Async Logging
  • Custom Log Message Types

Resources

Stay updated with new projects, tutorials, and announcements!

Want to get the latest news and updates when they come out?

We will email you with any relevant information as soon as we have it!

Send us an email with the subject line "I LOVE ESTROSEC!"
and a body of "NEWS & UPDATES YAY!"

Top comments (0)