Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
Loading...
Searching...
No Matches
logger_sample.cpp

Demonstrates logger initialization, file/console targets, and Unicode output (Korean, Chinese, Japanese) through both narrow and wide string logging APIs.

See also
log_module
// BSD 3-Clause License
// Copyright (c) 2024, πŸ€β˜€πŸŒ•πŸŒ₯ 🌊
// See the LICENSE file in the project root for full license information.
#include <iostream>
#include <chrono>
#include <thread>
#include "logger/core/logger.h"
bool use_backup_ = false;
uint32_t max_lines_ = 0;
uint16_t wait_interval_ = 100;
uint32_t test_line_count_ = 10000;
log_module::log_types file_target_ = log_module::log_types::Sequence;
log_module::log_types console_target_ = log_module::log_types::Sequence;
log_module::log_types callback_target_ = log_module::log_types::None;
auto initialize_logger() -> std::optional<std::string>
{
log_module::set_title("logger_sample");
log_module::set_use_backup(use_backup_);
log_module::set_max_lines(max_lines_);
log_module::file_target(file_target_);
log_module::console_target(console_target_);
log_module::callback_target(callback_target_);
log_module::message_callback(
[](const log_module::log_types& type, const std::string& datetime,
const std::string& message)
{ std::cout << formatter::format("[{}][{}] {}\n", datetime, type, message); });
if (wait_interval_ > 0)
{
log_module::set_wake_interval(std::chrono::milliseconds(wait_interval_));
}
return log_module::start();
}
auto main() -> int
{
auto error_message = initialize_logger();
if (error_message.has_value())
{
std::cerr << formatter::format("error starting logger: {}\n",
error_message.value_or("unknown error"));
return 0;
}
for (auto index = 0; index < test_line_count_; ++index)
{
log_module::write_debug("μ•ˆλ…•, World!: {}", index);
log_module::write_debug("ν…ŒμŠ€νŠΈ #{} - Hello, δΈ–η•Œ!", index);
log_module::write_debug("θ­¦ε‘Š {}: こんにけは", index);
log_module::write_sequence(L"μ•ˆλ…•, World!: {}", index);
log_module::write_sequence(L"ν…ŒμŠ€νŠΈ #{} - Hello, δΈ–η•Œ!", index);
log_module::write_sequence(L"θ­¦ε‘Š {}: こんにけは", index);
log_module::write_parameter("볡합 ν…ŒμŠ€νŠΈ - κ°’: {}, 이름: {}", index, "홍길동");
log_module::write_parameter(L"볡합 ν…ŒμŠ€νŠΈ - κ°’: {}, 이름: {}", index, L"홍길동");
log_module::write_information("μ—¬λŸ¬ 쀄 ν…ŒμŠ€νŠΈ:\n 라인 1: {}\n 라인 2: {}\n 라인 3: {}",
"μ•ˆλ…•ν•˜μ„Έμš”", "Hello, World", "こんにけは");
log_module::write_information(L"μ—¬λŸ¬ 쀄 ν…ŒμŠ€νŠΈ:\n 라인 1: {}\n 라인 2: {}\n 라인 3: {}",
L"μ•ˆλ…•ν•˜μ„Έμš”", L"Hello, World", L"こんにけは");
}
log_module::stop();
return 0;
}
Provides convenience methods for string formatting using C++20 <format>.
Definition formatter.h:122
Generic formatter for enum types using user-provided converter functors.
log_module::log_types file_target_
log_module::log_types callback_target_
uint32_t max_lines_
bool use_backup_
auto initialize_logger() -> std::optional< std::string >
uint32_t test_line_count_
log_module::log_types console_target_
uint16_t wait_interval_