c++ 日志库 loguru

创建日期: 2024-11-07 14:28 | 作者: 风波 | 浏览次数: 15 | 分类: C++

使用 c++ 日志库:loguru

项目主页:https://github.com/emilk/loguru 文档:https://emilk.github.io/loguru/index.html

注意⚠️:不提供日志滚动。也不提供日志大小限制。

1. 初始化日志配置

使用函数 loguru::init(argc, argv); 进行日志初始化,目前这个函数只接收 -v 参数。

-v 参数后面可以跟的选项如下

或者使用 loguru::g_stderr_verbosity = loguru::Verbosity_OFF; 关掉 stderr 的输出。

2. 增加日志文件

loguru::add_file(logfile.data(), loguru::Append, loguru::Verbosity_MAX);

目前只支持2种模式:

3. 写日志

LOG_F(INFO, "I'm hungry for some %.3f!", 3.14159);

官方文档代码

#include <loguru.hpp>

…

// Optional, but useful to time-stamp the start of the log.
// Will also detect verbosity level on command line as -v.
loguru::init(argc, argv);

// Put every log message in "everything.log":
loguru::add_file("everything.log", loguru::Append, loguru::Verbosity_MAX);

// Only log INFO, WARNING, ERROR and FATAL to "latest_readable.log":
loguru::add_file("latest_readable.log", loguru::Truncate, loguru::Verbosity_INFO);

// Only show most relevant things on stderr:
loguru::g_stderr_verbosity = 1;

LOG_SCOPE_F(INFO, "Will indent all log messages within this scope.");
LOG_F(INFO, "I'm hungry for some %.3f!", 3.14159);
LOG_F(2, "Will only show if verbosity is 2 or higher");
VLOG_F(get_log_level(), "Use vlog for dynamic log level (integer in the range 0-9, inclusive)");
LOG_IF_F(ERROR, badness, "Will only show if badness happens");
auto fp = fopen(filename, "r");
CHECK_F(fp != nullptr, "Failed to open file '%s'", filename);
CHECK_GT_F(length, 0); // Will print the value of `length` on failure.
CHECK_EQ_F(a, b, "You can also supply a custom message, like to print something: %d", a + b);

// Each function also comes with a version prefixed with D for Debug:
DCHECK_F(expensive_check(x)); // Only checked #if !NDEBUG
DLOG_F(INFO, "Only written in debug-builds");

// Turn off writing to stderr:
loguru::g_stderr_verbosity = loguru::Verbosity_OFF;

// Turn off writing err/warn in red:
loguru::g_colorlogtostderr = false;

// Throw exceptions instead of aborting on CHECK fails:
loguru::set_fatal_handler([](const loguru::Message& message){
    throw std::runtime_error(std::string(message.prefix) + message.message);
});
15 浏览
12 爬虫
0 评论