Simon Shi的小站

人工智能,机器学习, 强化学习,大模型,自动驾驶

0%

C++ 三方库

loguru.hpp

office web: GitHub - emilk/loguru: A lightweight C++ logging library

Docments

loguru一共只需要两个源文件: loguru.hpp 和 loguru.cpp.
链接的时候还需要: -lpthread -ldl

系统配置

1
2
3
loguru::g_stderr_verbosity = 9;                            // print everything
// 不想打印到console
loguru::g_stderr_verbosity = loguru::Verbosity_OFF; // not print anthing

日志配置

1
loguru::add_file("everything.log", loguru::Append, loguru::Verbosity_MAX);

标准输出,后缀_F类似于printf

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

判断程序,如果真,则输出

1
LOG_IF_F(ERROR, true, "Will only show if badness happens");

断言,会中断程序

1
CHECK_F(1 == 0, "Assertion 1 == 0 failed.\n '%s'\n '%d' ", a.c_str(), 1000);

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/// g++ demo.cpp loguru.cpp -lpthread -ldl

#include "loguru.hpp"
#include <cstdio>
#include <string>

int main(int argc,char *argv[]){
loguru::g_stderr_verbosity = 9;

// 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, true, "Will only show if badness happens");
// auto fp = fopen(filename, "r");
std::string a = "Here is a string.";
//CHECK_F(1 == 0, "Assertion 1 == 0 failed.\n '%s'\n '%d' ", a.c_str(), 1000);
/// 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;
return 0;
}

参考:简书-logurn