Giter Site home page Giter Site logo

logger's Introduction

Logger

Данный репозиторий посвящен программе логеру на C++

Features

Уровни логирования реализованы в виде enum class LogLevel:

Уровень Представление
DEBUG Logger::LogLevel::DEBUG
INFO Logger::LogLevel::INFO
WARNING Logger::LogLevel::WARNING
ERROR Logger::LogLevel::ERROR

Имеются следующие функции сеттеры для полей:

Функция сеттер Аргументы Значение полей в class Logger Описание
set_log_level LogLevel level - Устанавливает уровень логирования для консоли и файла
set_log_level_console LogLevel level LogLevel::INFO Устанавливает уровень логирования для консоли
set_log_level_file LogLevel level LogLevel::WARNING Устанавливает уровень логирования для файла
set_log_format const std::string& format [%timestamp%] [%level%] %message%" Устанавливает формат вывода логов
set_use_console_log bool console_ true Устанавливает флаг использования вывода в консоль (true включить)
set_use_file_log bool file_ true Устанавливает флаг использования вывода в файлы (true включить)
set_clear_all bool clear_all_ false При true удаляет все файлы логов в директории (с таким же наименованием) при создании объекта класса Logger или при вызове set_filename
set_filename const std::string& filename_, const std::string& path_folder_ = "logs", size_t max_entries_ = 1000000 const std::string& path_folder_ = "logs", size_t max_entries_ = 1000000 Устанвливает новое название файлов
set_max_entries size_t max_entries_ size_t max_entries_ = 1000000 Устанвливает количество записей в одном файле
set_max_files size_t max_files_ size_t max_files_ = 5 Устанавливает максимальное количество файлов

Tech

Для работы Logger использует стандарт  C++20:

  • MinGW - Компилятор MinGW

При тестировании использовался следующий компилятор: GCC 13.2.0 (with POSIX threads) + LLVM/Clang/LLD/LLDB 16.0.6 + MinGW-w64 11.0.0 (UCRT) - release 1

Installation

  1. Архив с компилятором необходимо разархивировать в удобное место (обычно в C:\mingw64)
  2. Добавить в переменные среды в системные переменные в Path: C:\mingw64 и C:\mingw64\bin
  3. Проверить работоспособность компилятора в консоли:
gcc -v
  1. Выбрать MinGW в IDE для компиляции (Если используете IDE)

Usage

Функия Аргументы Описание
Logger const std::string& filename_, const std::string& path_folder_ = "logs", size_t max_entries_ = 1000000, size_t max_files_ = 5 Конструктор класса Logger
log LogLevel level, const std::string& message Записывает log с выбранным уровнем логирования
debug const std::string& debug_message Записывает log с уровнем логирования DEBUG
info const std::string& info_message Записывает log с уровнем логирования INFO
warning const std::string& warning_message Записывает log с уровнем логирования WARNING
error const std::string& error_message Записывает log с уровнем логирования ERROR
  • Пример использования:
#include "logger.h"

int main() {
    Logger logger("logfile.txt", "logs", 8);

    logger.log(Logger::LogLevel::WARNING, "console Warning message");
    logger.debug("console Debug message");
    logger.info("console Info message");
    logger.warning("console Warning message");
    logger.error("console Error message");
}
  • Вывод в консоли:
[30-09-2020 21:59:05] [WARNING] console Warning message
[30-09-2020 21:59:05] [INFO] console Info message
[30-09-2020 21:59:05] [WARNING] console Warning message
[30-09-2020 21:59:05] [ERROR] console Error message

Как видно из примера, лог с уровнем логирования DEBUG не вывелся в консоль

Files

  • CMakeLists.txt - файл настроек для сборки программного проекта с помощью CMake
  • logger.cpp - файл с реализацией логера
  • logger.h - файл с объявлениями класса логера и его функций
  • main.cpp - файл с нативными тестами
  • timer.cpp - файл с реализацией таймера для main.cpp
  • timer.h - файл с объявлениями функций и классов для timer.cpp

License

MIT

Free Software, Hell Yeah!

logger's People

Contributors

your-rogr avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.