elog4cpp官方文档
这篇文档围绕 elog4cpp 的工程落地使用展开,覆盖了从快速接入到高级定制的完整使用路径。定位与核心能力elog4cpp 主打“易用 + 高性能”,支持 C++11+ 且跨平台。提供静态 API、Log 对象和 ELG_<LEVEL> 宏三种主要调用方式。文档强调同步/异步日志延迟优势,并给出 benchmark…
代码仓库:https://github.com/ACking-you/elog4cpp elog4cpp :意味着这是一个使用上非常 easy,同时性能上也非常 efficiency c++ log 日志库。 支持c++11及以上,并且完全的跨平台。 使用 easy 体现在: api简单,你只需要关注一个 elog::Log 类,或者静态方法 Log::<LEVEL> ,又或是宏定义 ELG_<LEVEL>。 格式化输出简单,因为格式化输出使用的 fmt 库。 自定义格式化方式简单,支持自定义 formatter,而且已经预置四种 formatter,包括 defaultFormatter、colorfulFormatter、jsonFormatter、customFormatter。 配置简单,支持通过 json 文件一键读取配置项。 引入简单,支持 cmake 命令一键引入项目并使用。 性能 efficiency 体现在:同步输出一条日志的延迟只需 180ns ,异步只需 120ns,是 spdlog 至少4倍的性能。 对于benchmark,可以参考tests/bench_start.cc快速开始要求C++11及以上,是跨全平台的安装与引入 推荐用以下两种方式进行引入: 方法一:通过cmake中的 FetchContent 模块引入:在项目的cmake中添加下列代码进行引入,国内如果因为网络问题无法使用可以换这个gitee的镜像源:https://gitee.com/acking-you/elog4cpp.gitinclude(FetchContent) FetchContent_Declare( elog4cpp GIT_REPOSITORY https://github.com/ACking-you/elog4cpp.git GIT_TAG v2.2 GIT_SHALLOW TRUE) FetchContent_MakeAvailable(elog4cpp) 在需要使用该库的目标中链接 elog 即可。target_link_libraries(target elog) 方法二:手动下载源代码,然后通过cmake命令引入: 通过git命令下载项目源码git clone https://github.com/ACking-you/elog4cpp.git 将该项目添加到子项目中:add_subdirectory(elog4cpp) 在需要使用该库的目标中链接 elog 即可。target_link_libraries(target elog) 开始使用 在不经过任何配置的情况下,我们可以直接调用静态方法输出到终端,代码如下:#include <elog/logger.h> using namespace elog; int main() { Log::trace("hello elog4cpp"); Log::debug("hello elog4cpp"); Log::info("hello elog4cpp"); Log::warn("hello elog4cpp"); Log::error("hello elog4cpp"); Log::fatal("hello elog4cpp"); } 输出结果如下: output 通过上述例子,我们需要明白以下三点:本日志库的输出等级一共有 trace 、debug 、info 、warn 、error 、fatal 。默认的输出最低输出等级为 debug ,也就是 trace 等级并不输出。在进行 fatal 等级的输出时会抛出异常。 实际上在 error 或 fatal 等级输出时,如果 errno 存在错误,那么会输出对应的错误,这在进行系统编程的时候很有用。 前面的例子中,我们无法输出 trace 等级的日志,现在我们尝试着改变它的最低输出等级,然后将输出的内容增加更多的信息(比如文件名、行号、函数名等),并且将输出的内容以颜色高亮的形式输出。 代码如下:#include <elog/logger.h> using namespace elog; int main() { GlobalConfig::Get() .setLevel(Levels::kTrace) .setFormatter(formatter::colorfulFormatter); Log::trace(loc::current(),"hello elog4cpp"); Log::debug(loc::current(),"hello elog4cpp"); Log::info(loc::current(),"hello elog4cpp"); Log::warn(loc::current(),"h…
正在初始化 WebAssembly 引擎…
首次编译原生模块可能需要数秒
就绪后,页面交互将以接近原生的速度运行