SkillAgentSearch skills...

Easyloggingpp

C++ logging library. It is powerful, supports asynchronous low latency, extendable, light-weight, fast performing, thread and type safe and consists of many built-in features. It provides ability to write logs in your own customized format. It also provide support for logging your classes, third-party libraries, STL and third-party containers etc.

Install / Use

/learn @abumq/Easyloggingpp

README

<p align="center"> ﷽ </p>

![banner]

ARCHIVE NOTICE

⚠️ This project is archived and no longer actively maintained.

Easylogging++ has been a labor of love from 2012 to 2018, and it’s been incredible to see the community embrace it. From embedded systems to desktop applications, this little library made its way into countless projects—many thanks to you, the developers, contributors, and users who helped shape it over the years.

Thank You

To everyone who:

  • Contributed pull requests
  • Reported issues
  • Wrote benchmarks—some comparing limited setups (e.g., without enabling asynchronous logging or multithreading, like Issue #73 on KjellKod/g3log) and others using full feature sets
  • Shared feedback and real-world use cases

Your involvement gave this project purpose and direction.

Now Archived: Consider spdlog for New Projects

While Easylogging++ is still a fully-featured, single-header C++ logging library, I recommend using spdlog or other actively maintained logging libraries for new projects. These libraries continue to evolve and offer better integration, performance, and community support.

No Longer Maintained

Due to other commitments and active projects, I will not be making changes or accepting pull requests going forward.

However, Easylogging++ remains under the permissive MIT License. You are welcome—and encouraged—to fork, customize, or evolve the library as you see fit. This was the exact reason I chose MIT: to empower developers like you with maximum freedom.

Grateful and Humble

It’s been a wonderful ride, and I’m truly humbled by the response this project received. If you’ve used Easylogging++ or learned something from it—thank you.

Feel free to follow my GitHub to stay in the loop with the other projects I’m working on.

Stay curious, keep building.
Majid Q. (@abumq)


Documentation for v9.97.1

Node Binding Version Version GitHub license Downloads

Quick Links

Latest Release

Changelog

Samples


Table of Contents

<pre> <a href="#overview">Overview</a> <a href="#why-yet-another-library">Why yet another library</a> <a href="#features-at-a-glance">Features at a glance</a> <a href="#getting-started">Getting Started</a> <a href="#download">Download</a> <a href="#quick-start">Quick Start</a> <a href="#install-optional">Install (Optional)</a> <a href="#setting-application-arguments">Setting Application Arguments</a> <a href="#configuration">Configuration</a> <a href="#level">Level</a> <a href="#configure">Configure</a> <a href="#using-configuration-file">Using Configuration File</a> <a href="#using-elconfigurations-class">Using el::Configurations Class</a> <a href="#using-in-line-configurations">Using In line Configurations</a> <a href="#default-configurations">Default Configurations</a> <a href="#global-configurations">Global Configurations</a> <a href="#logging-format-specifiers">Logging Format Specifiers</a> <a href="#datetime-format-specifiers">Date/Time Format Specifiers</a> <a href="#custom-format-specifiers">Custom Format Specifiers</a> <a href="#logging-flags">Logging Flags</a> <a href="#application-arguments">Application Arguments</a> <a href="#configuration-macros">Configuration Macros</a> <a href="#reading-configurations">Reading Configurations</a> <a href="#logging">Logging</a> <a href="#basic">Basic</a> <a href="#conditional-logging">Conditional Logging</a> <a href="#occasional-logging">Occasional Logging</a> <a href="#printf-like-logging">printf Like Logging</a> <a href="#network-logging">Network Logging</a> <a href="#verbose-logging">Verbose Logging</a> <a href="#basic-1">Basic</a> <a href="#conditional-and-occasional-logging">Conditional and Occasional</a> <a href="#verbose-level">Verbose Level</a> <a href="#check-if-verbose-logging-is-on">Check If Verbose Logging Is On</a> <a href="#vmodule">VModule</a> <a href="#registering-new-loggers">Registering New Loggers</a> <a href="#unregister-loggers">Unregister Loggers</a> <a href="#populating-existing-logger-ids">Populating Existing Logger IDs</a> <a href="#sharing-logging-repository">Sharing Logging Repository</a> <a href="#extra-features">Extra Features</a> <a href="#performance-tracking">Performance Tracking</a> <a href="#conditional-performance-tracking">Conditional Performance Tracking</a> <a href="#make-use-of-performance-tracking-data">Make Use of Performance Tracking Data</a> <a href="#log-file-rotating">Log File Rotating</a> <a href="#crash-handling">Crash Handling</a> <a href="#installing-custom-crash-handlers">Installing Custom Crash Handlers</a> <a href="#stacktrace">Stacktrace</a> <a href="#multi-threading">Multi-threading</a> <a href="#check-macros">CHECK Macros</a> <a href="#logging-perror">Logging perror()</a> <a href="#syslog">Using Syslog</a> <a href="#stl-logging">STL Logging</a> <a href="#supported-templates">Supported Templates</a> <a href="#qt-logging">Qt Logging</a> <a href="#boost-logging">Boost Logging</a> <a href="#wxwidgets-logging">wxWidgets Logging</a> <a href="#extending-library">Extending Library</a> <a href="#logging-your-own-class">Logging Your Own Class</a> <a href="#logging-third-party-class">Logging Third-party Class</a> <a href="#manually-flushing-and-rolling-log-files">Manually Flushing and Rolling Log Files</a> <a href="#log-dispatch-callback">Log Dispatch Callback</a> <a href="#logger-registration-callback">Logger Registration Callback</a> <a href="#asynchronous-logging">Asynchronous Logging</a> <a href="#helper-classes">Helper Classes</a> <a href="#contribution">Contribution</a> <a href="#submitting-patches">Submitting Patches</a> <a href="#reporting-a-bug">Reporting a Bug</a> <a href="#compatibility">Compatibility</a> <a href="#build-matrix">Build Matrix</a> <a href="#licence">Licence</a> <a href="#disclaimer">Disclaimer</a> </pre>

Overview

Easylogging++ is single header efficient logging library for C++ applications. It is extremely powerful, highly extendable and configurable to user's requirements. It provides ability to write your own sinks (via featured referred as LogDispatchCallback). This library is currently used by hundreds of open-source projects on github and other open-source source control management sites.

This manual is for Easylogging++ v9.97.1. For other versions please refer to corresponding release on github.

You may also be interested in Residue logging server.

![top] Goto Top

Why yet another library

If you are working on a small utility or large project in C++, this library can be handy. Its based on single header and only requires to link to single source file. (Originally it was header-only and was changed to use source file in issue #445. You can still use header-only in v9.89).

This library has been designed with various thoughts in mind (i.e, portability, performance, usability, features and easy to setup).

Why yet another library? Well, answer is pretty straight forward, use it as you wrote it so you can fix issues (if any) as you go or raise them on github. In addition to that, I personally have not seen any logging library based on single-header with such a design where you can configure on the go, extend it to your needs and get fast performance. I have seen other single-header logging libraries for C++ but either they use external libraries, e.g, boost or Qt to support certain features like threading, regular expression or date etc. This library has everything built-in to prevent usage of external libraries, not that I don't like those libraries, in fact I love them, but because not all projects use these libraries, I couldn't take risk of depending on them.

![top] Goto Top

Features at a glance

Easylogging++ is feature-rich containing many features that both typical and advanced developer will require while writing a software;

![top] Goto Top

Getting Started

Downl

View on GitHub
GitHub Stars3.9k
CategoryCustomer
Updated4d ago
Forks949

Languages

C++

Security Score

100/100

Audited on Mar 23, 2026

No findings