awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
gabime avatar

gabime/spdlog

0
View on GitHub↗
28,922 stars·5,175 forks·C++·8 views

Spdlog

spdlog is a high-performance C++ logging library designed to record diagnostic messages and application events. It serves as an asynchronous logging framework and thread-safe library that coordinates access across concurrent threads to maintain message integrity.

The project functions as a multi-target log router, distributing single events to multiple destinations such as consoles, files, and system daemons. It includes a log rotation manager that handles file lifecycles through basic, rotating, or daily rollover strategies to prevent disk exhaustion.

The library covers a broad range of capabilities, including custom log formatting for user-defined types and binary data, source location capture, and execution time tracking. It also provides observability primitives such as event backtrace capture via debug message ring buffering and the ability to manage log levels through external runtime configuration.

The library is available as a header-only distribution to eliminate separate compilation steps.

Features

  • Logging Frameworks - Implements a high-performance system for capturing, formatting, and routing application log events asynchronously.
  • Application Logging - Provides a high-performance C++ framework for recording diagnostic messages to consoles, files, and system services.
  • Diagnostic Log Routers - Distributes single log events to multiple destinations such as consoles, files, and system daemons.
  • C++ Logging Libraries - Provides a high-performance C++ logging framework available as either a header-only or compiled library.
  • Thread-Safe Collection Wrappers - Ensures concurrency safety when recording diagnostic information across multiple threads.
  • Asynchronous Event Dispatchers - Offloads logging operations to a background thread pool to prevent blocking the application's main execution flow.
  • Lock-Free Concurrent Queues - Implements a lock-free concurrent queue to offload logging I/O operations to a background worker thread.
  • Thread-Safe Logging - Coordinates concurrent access to logging resources to maintain message integrity and prevent data corruption.
  • Asynchronous Logging - Processes log messages on a background thread pool to prevent logging operations from blocking main execution.
  • Log Rotation Utilities - Includes a manager that automatically rotates log files based on size or time to prevent disk exhaustion.
  • Log Sinks - Distributes log events to multiple destinations like consoles and files through a common pluggable sink interface.
  • Log File Writers - Records diagnostic information to local files using various rollover strategies to manage disk space.
  • Multi-Destination Forwarding - Replicates and sends a single log event to multiple independent storage endpoints simultaneously.
  • Custom Log Writers - Allows the definition of new output destinations by implementing a custom sink interface.
  • Console Log Formatters - Writes formatted and color-coded diagnostic messages directly to standard output or error streams.
  • Header-Only Libraries - Provides a header-only distribution to simplify integration and eliminate the need for separate compilation steps.
  • Source Location Capture - Captures the filename and line number of the call site using macros to provide precise diagnostic context.
  • Custom Log Formatting - Enables the definition of specific layouts and patterns to inject source locations and user-defined types into logs.
  • File Validation Policies - Automatically manages disk space by rotating log files based on size limits or time intervals.
  • Log Layout Customization - Defines the layout of log messages using pattern strings or custom formatters.
  • Log Management - Allows runtime control of log verbosity via environment variables or command-line arguments.
  • Source Location Capture - Records the filename and line number where a log event occurred using macros and compiler flags.
  • Content Format Transformers - Uses pattern strings and type resolution to transform raw data into human-readable formatted text.
  • User-Defined Type Formatters - Provides the ability to define custom formatting logic for rendering complex application objects in log messages.
  • Severity Level Filtering - Controls which messages are recorded based on severity levels that can be modified at compile time or runtime.
  • Contextual Logging - Stores key-value pairs in thread-local storage to automatically append diagnostic context to log entries.
  • Debug Message Ring Buffers - Stores recent debug messages in a ring buffer and flushes them only when explicitly triggered.
  • Runtime Failure Backtrace Capturers - Captures a history of debug messages in a ring buffer to display them on demand after an error occurs.
  • System Logging - Integrates with operating system logging daemons such as syslog or systemd to record diagnostic information.
  • System Monitoring - High-performance C++ logging library.
  • Developer Tools and Utilities - High-performance logging library.
  • Formatting and Logging - Fast, header-only C++ logging library.
  • Logging Frameworks - Extremely fast C++ logging library.
  • Logging Libraries - Fast and efficient C++ logging library.
  • Logging Utilities - High-performance logging library.
  • Networking and Utilities - Fast logging library.

Star history

Star history chart for gabime/spdlogStar history chart for gabime/spdlog

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does gabime/spdlog do?

spdlog is a high-performance C++ logging library designed to record diagnostic messages and application events. It serves as an asynchronous logging framework and thread-safe library that coordinates access across concurrent threads to maintain message integrity.

What are the main features of gabime/spdlog?

The main features of gabime/spdlog are: Logging Frameworks, Application Logging, Diagnostic Log Routers, C++ Logging Libraries, Thread-Safe Collection Wrappers, Asynchronous Event Dispatchers, Lock-Free Concurrent Queues, Thread-Safe Logging.

What are some open-source alternatives to gabime/spdlog?

Open-source alternatives to gabime/spdlog include: easylogging/easyloggingpp — Easyloggingpp is a header-only C++ logging framework and diagnostic tool designed for recording system events and… amrayn/easyloggingpp — Easyloggingpp is a C++ logging library and thread-safe logging framework used for recording diagnostic messages and… winstonjs/winston — Winston is a versatile logging library for Node.js designed to record system events and metadata. It functions as a… cocoalumberjack/cocoalumberjack — CocoaLumberjack is a logging framework designed for Apple platforms, providing a system for capturing, filtering, and… sirupsen/logrus — Logrus is a structured logging library for Go that produces machine-readable output using key-value pairs and JSON… orhanobut/logger — This Android logging library is a toolkit for printing formatted, stylized, and filtered debug messages to the Android…

Open-source alternatives to Spdlog

Similar open-source projects, ranked by how many features they share with Spdlog.
  • easylogging/easyloggingppeasylogging avatar

    easylogging/easyloggingpp

    3,938View on GitHub↗

    Easyloggingpp is a header-only C++ logging framework and diagnostic tool designed for recording system events and diagnostic messages. It functions as a thread-safe logging library that synchronizes access across multiple concurrent execution threads to prevent data corruption during event recording. The framework features an asynchronous logger that processes messages on a background thread to minimize latency and prevent blocking the main application. It also acts as a log dispatcher, capable of routing data to local files, system syslog facilities, or remote network destinations for system

    C++
    View on GitHub↗3,938
  • amrayn/easyloggingppamrayn avatar

    amrayn/easyloggingpp

    3,937View on GitHub↗

    Easyloggingpp is a C++ logging library and thread-safe logging framework used for recording diagnostic messages and application events. It functions as an asynchronous logger, processing messages on a background thread to reduce latency and prevent blocking the main execution path. The project includes a log rotation manager to automatically truncate or roll over files once they reach a specified disk size limit. It also serves as a performance tracking tool for measuring function execution timing and recording checkpoints to identify processing bottlenecks. The library covers a broad range

    C++
    View on GitHub↗3,937
  • winstonjs/winstonwinstonjs avatar

    winstonjs/winston

    24,478View on GitHub↗

    Winston is a versatile logging library for Node.js designed to record system events and metadata. It functions as a multi-transport log manager that routes data to various destinations and a structured log formatter that transforms entries into JSON or plain text. The project is distinguished by its pluggable transport architecture, which decouples the logging interface from delivery mechanisms. This allows for the creation of custom transport extensions and the use of hierarchical logger instances to inherit configurations while attaching persistent metadata to downstream messages. The libr

    JavaScript
    View on GitHub↗24,478
  • cocoalumberjack/cocoalumberjackCocoaLumberjack avatar

    CocoaLumberjack/CocoaLumberjack

    13,327View on GitHub↗

    CocoaLumberjack is a logging framework designed for Apple platforms, providing a system for capturing, filtering, and managing diagnostic messages within mobile and desktop applications. It serves as a tool for monitoring software health and troubleshooting runtime issues by recording application events across various severity levels. The framework utilizes a modular architecture that allows developers to define custom log levels and route diagnostic output to multiple concurrent destinations, including the system console, local files, and remote servers. It incorporates an asynchronous pipel

    Objective-Ccarthagecocoalumberjackcocoapods
    View on GitHub↗13,327
  • See all 30 alternatives to Spdlog→