Skip to content

NamanBharsakale/Logging-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🪵 Modular Configurable Logging Framework (C++)

A reusable C++11 logging library demonstrating Encapsulation, Inheritance, Polymorphism, Abstraction, Composition.

✨ Features

  • 6 levels: TRACE, DEBUG, INFO, WARNING, ERROR, FATAL
  • Multiple outputs: console + file
  • Timestamped records (YYYY-MM-DD HH:MM:SS)
  • Configurable threshold filtering
  • Extensible formatter/handler design

🏗️ Architecture

┌─────────────────────────────────────┐
│     Application Code (Your App)     │
└──────────────┬──────────────────────┘
               │ uses
               ↓
┌─────────────────────────────────────┐
│    Logger (Core Coordinator)        │  ← Composition
└──────────────┬──────────────────────┘
               │ delegates to
       ┌───────┴────────┐
       ↓                ↓
┌─────────────┐  ┌──────────────┐
│  Formatter  │  │ Log Handlers │  ← Polymorphism
│ (Strategy)  │  │   (Outputs)  │
└─────────────┘  └──────┬───────┘
                        │
           ┌────────────┴────────────┐
           ↓                         ↓
    ┌─────────────┐          ┌─────────────┐
    │   Console   │          │    File     │
    │   Handler   │          │   Handler   │
    └─────────────┘          └─────────────┘

🔐 Important OOP Concepts

  • Encapsulation: internal file/stream state hidden inside handlers
  • Inheritance: ConsoleHandler / FileHandler derive from LogHandler
  • Polymorphism: shared write() interface for all handlers
  • Abstraction: Formatter and LogHandler are abstract interfaces
  • Composition: Logger owns formatter + list of handlers

🚀 Quick Start

#include "Logger.h"
#include "SimpleFormatter.h"
#include "ConsoleHandler.h"
#include "FileHandler.h"

int main() {
    SimpleFormatter fmt;
    Logger logger(LogLevel::INFO, &fmt);

    ConsoleHandler console;
    FileHandler file("logs/app.log");
    logger.addHandler(&console);
    logger.addHandler(&file);

    logger.info("Application started");
    logger.error("Something went wrong");
    return 0;
}

⚙️ Build

Windows (MinGW)

g++ -std=c++11 -I include main.cpp src/*.cpp -o logging_demo.exe

Linux/macOS

g++ -std=c++11 -I include main.cpp src/*.cpp -o logging_demo
./logging_demo

📁 Structure

include/: LogLevel, LogRecord, Formatter, SimpleFormatter, LogHandler, ConsoleHandler, FileHandler, Logger
src/:     LogRecord.cpp, SimpleFormatter.cpp, ConsoleHandler.cpp, FileHandler.cpp, Logger.cpp
main.cpp: demo app
logs/:    runtime log output

📌 Key API

  • Logger(LogLevel level, Formatter* fmt)
  • addHandler(LogHandler* handler)
  • log(level, message) + trace/debug/info/warning/error/fatal

✅ Notes

  • C++11 compatible (GCC/Clang/MSVC)
  • Easy to extend with JSON formatter, rotating file handler, async logging, thread safety

About

Logging system captures program events, processes them, and sends them to configured outputs automatically during runtime.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors