dydtjr1128 / YLogger

C++17 based logger for cross-platform

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

YLogger

YLogger is cross platform logging project based c++17.

This is very simple and single header logging.
Also YLogger is thread-safe, fast, light.

YLogger support ConsoleAppender, FileAppender, RollingAppender.

It can use very easy. Basic settings can be made simply by creating a conig file.

Feature

  • Support FileAppender/ConsoleAppender
  • Support log file save path
  • Fast
  • Easy to use
  • Simple
  • Single header

Example code

#include "YLogger.h" // only include single header file

void func1(int i) {
    LOG_DEBUG("로그 - " + std::to_string(i));
}

void func2(int i) {
    LOG_INFO("로그2 - " + std::to_string(i));
}

int main() {
    system("chcp 949");

    // Default config, Not essential. default is logger::LogLevel::Debug
    //logger::YLogger::Initialize(); 

    // Set logger level logger::LogLevel::Info. So, The logger does not show logs below the info level.
    logger::YLogger::Initialize(logger::LogLevel::Info); 

    // Set logger to console
    logger::YLogger::GetLogger()->AddLogger(logger::LoggerType::ConsoleAppender);

    // Default save ./Log
    logger::YLogger::GetLogger()->AddLogger(logger::LoggerType::FileAppender);

    // Set save log file path
    logger::YLogger::GetLogger()->AddLogger(logger::LoggerType::FileAppender, "./temp2");

    std::cout << "FileAppender write 100 lines" << std::endl;

    for (int i = 0; i < 100; i++) {
        std::thread tt([i]() {
            // thread-safe log
            if (i % 2 == 0) {
                func1(i);
            }
            else {
                func2(i);
            }
            });
        tt.detach();
    }

    return 0;
}

You can use YLogger just by initialize it.

Sample image

There are some sample images. g++ build with g++ Main.cpp YLogger.h -std=c++17 -pthread -o ylogger_example.out command.

Windows ConsoleAppender

example_image

Ubnutu ConsoleAppender

example_image

Windows FileAppender

example_image

Ubnutu FileAppender

example_image


Performance

SingleThread

The test is based on an average value of five measurements of the time taken when 100,000 logs were recorded in a single thread.

FileAppender write 100,000 lines
350ms

ConsoleAppender write 100,000 lines
14767ms

MultiThread

The test is based on an average value of five measurements of the time taken when 1 log in each 100,000 threads were recorded in a multi thread include create thread time.

FileAppender write 100,000 lines
5575ms

ConsoleAppender write 100,000 lines
25310ms

TODO

  • Support Thread pool for multi appender
  • Support Rolling Appender(zip files, clean up...)

About

C++17 based logger for cross-platform


Languages

Language:C++ 100.0%