[开发|C++] C++日志框架

  1. spdlog:spdlog是一个快速、异步、线程安全的C++日志库,支持多种日志格式,包括纯文本、JSON和syslog。spdlog提供了灵活的配置选项和可扩展的接口,可以方便地集成到任何C++项目中。
    仓库地址
    示例代码
#include "spdlog/spdlog.h"

int main() 
{
    spdlog::info("Welcome to spdlog!");
    spdlog::error("Some error message with arg: {}", 1);
    
    spdlog::warn("Easy padding in numbers like {:08d}", 12);
    spdlog::critical("Support for int: {0:d};  hex: {0:x};  oct: {0:o}; bin: {0:b}", 42);
    spdlog::info("Support for floats {:03.2f}", 1.23456);
    spdlog::info("Positional args are {1} {0}..", "too", "supported");
    spdlog::info("{:<30}", "left aligned");
    
    spdlog::set_level(spdlog::level::debug); // Set global log level to debug
    spdlog::debug("This message should be displayed..");    
    
    // change log pattern
    spdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v");
    
    // Compile time log levels
    // define SPDLOG_ACTIVE_LEVEL to desired level
    SPDLOG_TRACE("Some trace message with param {}", 42);
    SPDLOG_DEBUG("Some debug message");
}
  1. glog:glog是一个谷歌开源的C++日志库,支持多线程、异步输出和轮转日志。glog提供了可扩展的日志级别、多种输出格式和错误堆栈跟踪功能,非常适合大型分布式系统的日志记录。
    仓库地址
    示例代码
#include <glog/logging.h>

int main(int argc, char* argv[]) {
    // Initialize Google’s logging library.
    google::InitGoogleLogging(argv[0]);

    // ...
    LOG(INFO) << "Found " << num_cookies << " cookies";
}
  1. Log4cxx:Log4cxx是一个Apache开源的C++日志库,它是log4j的C++实现。Log4cxx提供了多种日志级别、多种输出格式和灵活的配置选项,支持各种目标输出,包括文件、控制台、UDP和TCP等。
    官方地址
    仓库地址
    示例代码
#include <iostream>
#include <log4cxx/logger.h>
#include <log4cxx/basicconfigurator.h>
#include <log4cxx/patternlayout.h>
#include <log4cxx/consoleappender.h>
#include <log4cxx/fileappender.h>

int main() {
    // 1. 创建一个日志器
    log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("MyLogger"));

    // 2. 设置输出格式
    log4cxx::PatternLayoutPtr layout(new log4cxx::PatternLayout("%d %5p [%t] %c{2} - %m%n"));

    // 3. 设置控制台输出
    log4cxx::ConsoleAppenderPtr consoleAppender(new log4cxx::ConsoleAppender(layout));
    logger->addAppender(consoleAppender);

    // 4. 设置文件输出
    log4cxx::FileAppenderPtr fileAppender(new log4cxx::FileAppender(layout, "logs/logfile.log"));
    logger->addAppender(fileAppender);

    // 5. 设置日志级别
    logger->setLevel(log4cxx::Level::getInfo());

    // 6. 输出日志信息
    LOG4CXX_DEBUG(logger, "debug message");
    LOG4CXX_INFO(logger, "info message");
    LOG4CXX_WARN(logger, "warn message");
    LOG4CXX_ERROR(logger, "error message");
    LOG4CXX_FATAL(logger, "fatal message");

    return 0;
}
  1. Boost.Log:Boost.Log是一个C++日志库,它是Boost库的一部分。Boost.Log提供了多种日志级别、多种输出格式和高度可定制的日志记录器,可以轻松地适应各种项目需求。
    仓库地址
    示例代码
#include <boost/log/trivial.hpp>

int main(int argc, char* argv[])
{
    BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
    BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
    BOOST_LOG_TRIVIAL(info) << "An informational severity message";
    BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
    BOOST_LOG_TRIVIAL(error) << "An error severity message";
    BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";

    return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值