测试版本:v9.97.0
从官网下载源码:easylogging++.cc和easylogging++.h
1、默认文件记录
-
#include "easylogging++.h" INITIALIZE_EASYLOGGINGPP int main() { LOG(INFO) << "this is info"; LOG(ERROR) << "this is error"; LOG(WARNING) << "this is warning"; LOG(DEBUG) << "this is debug"; return 0; }
2、多文件分级记录
-
#include "easylogging++.h" INITIALIZE_EASYLOGGINGPP int main() { // 加载配置文件 el::Configurations conf("default-logger.conf"); // 重置默认配置 el::Loggers::reconfigureLogger("default", conf); // 重置所有配置 el::Loggers::reconfigureAllLoggers(conf); LOG(INFO) << "this is info"; LOG(ERROR) << "this is error"; LOG(WARNING) << "this is warning"; LOG(DEBUG) << "this is debug"; return 0; }
- default-logger.conf
-
* GLOBAL: FORMAT = "%datetime | %level | %logger | %msg" ## 日志输出格式化 FILENAME = "./logs/%datetime{%d/%M/%y}.log" ## 文件名格式化(不能使用%logger等项) ENABLED = true ## 是否启用此分级项 TO_FILE = true ## 是否写入文件中 TO_STANDARD_OUTPUT = true ## 是否输出到控制台 SUBSECOND_PRECISION = 3 PERFORMANCE_TRACKING = false ## 性能检测 MAX_LOG_FILE_SIZE = 2097152 ## 最大2MB * DEBUG: FILENAME = "./logs/%datetime{%d/%M/%y}-debug.log" * WARNING: FILENAME = "./logs/%datetime{%d/%M/%y}-warning.log" * TRACE: ENABLED = false * VERBOSE: ENABLED = false TO_FILE = false * ERROR: FILENAME = "./logs/%datetime{%d/%M/%y}-error.log" * FATAL: ENABLED = false
- 输出结果
3、多模块分级记录
-
#include "easylogging++.h" INITIALIZE_EASYLOGGINGPP int main() { // 加载全局配置 el::Loggers::configureFromGlobal("global.conf"); // 使用第一个日志器 el::Logger *defaultLogger = el::Loggers::getLogger("default"); defaultLogger->info("this is info"); defaultLogger->error("this is error"); // 使用第二个日志器 el::Logger *melonLogger = el::Loggers::getLogger("melon"); melonLogger->info("this is info"); melonLogger->error("this is error"); melonLogger->debug("this is debug"); return 0; }
- 输出结果
- global.conf
## Comment line -- default ## Inline Comment * GLOBAL: FORMAT = "%datetime | %level | %logger | %msg" FILENAME = "./logs/%datetime{%d/%M/%y}-default.log" ENABLED = true TO_FILE = true TO_STANDARD_OUTPUT = true SUBSECOND_PRECISION = 3 PERFORMANCE_TRACKING = false MAX_LOG_FILE_SIZE = 2097152 ## Throw log files away after 2MB *ERROR: FILENAME = "./logs/%datetime{%d/%M/%y}-default-error.log" -- melon ## Inline Comment * GLOBAL: FORMAT = "%datetime | %level | %logger | %msg" FILENAME = "./logs/%datetime{%d/%M/%y}-melon.log" ENABLED = true TO_FILE = true TO_STANDARD_OUTPUT = true SUBSECOND_PRECISION = 3 PERFORMANCE_TRACKING = false MAX_LOG_FILE_SIZE = 2097152 ## Throw log files away after 2MB *ERROR: FILENAME = "./logs/%datetime{%d/%M/%y}-melon-error.log" * DEBUG: FILENAME = "./logs/%datetime{%d/%M/%y}-melon-debug.log"
4、代码配置
-
{ el::Configurations defaultConf; defaultConf.setToDefault(); // Values are always std::string defaultConf.set(el::Level::Global, el::ConfigurationType::Format, "%datetime %level %msg"); defaultConf.set(el::Level::Global, el::ConfigurationType::Enabled, "true"); defaultConf.set(el::Level::Global, el::ConfigurationType::Filename, (K_SDCARD_PATH + "logs/Log-%datetime{%Y-%M-%d-%H-%m-%s}.log")); defaultConf.set(el::Level::Global, el::ConfigurationType::ToFile, "true"); defaultConf.set(el::Level::Global, el::ConfigurationType::ToStandardOutput, "false"); defaultConf.set(el::Level::Global, el::ConfigurationType::PerformanceTracking, "false"); defaultConf.set(el::Level::Global, el::ConfigurationType::MaxLogFileSize, "2048000"); defaultConf.set(el::Level::Global, el::ConfigurationType::LogFlushThreshold, "100"); // default logger uses default configurations el::Loggers::reconfigureLogger("default", defaultConf); }