c++日志工具spdLog

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
文本翻译,文本翻译 100万字符
图片翻译,图片翻译 100张
简介: c++日志工具spdLog

c++日志工具spdLog简单使用示例代码


spdlog直接引用头文件就可以使用,这一点还是比较方便的,也是刚入门使用,下面是在源码的示例代码基础上修改测试的代码:

#include <cstdio>
#include <iostream>
#include "spdlog/spdlog.h"
#include "spdlog/sinks/stdout_color_sinks.h" // or "../stdout_sinks.h" if no color needed
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/rotating_file_sink.h"
 
void err_handler_example()
{
  spdlog::set_error_handler([](const std::string& msg){printf("*****Custom log error handler, %s*****%\n", msg.c_str());});
}
 
int main(int , char *[])
{
  try 
  {
    auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
    console_sink->set_level(spdlog::level::debug);
    console_sink->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%n] [%t] [%l] %v%$");
 
    //auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs/multisink.txt", false);
    auto file_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>("logs/multisink.txt", 1048576, 3);
    file_sink->set_pattern("[%Y-%m-%d %H:%M:%S:%e] [%n] [%t] [%l] %v");
    file_sink->set_level(spdlog::level::debug);
 
    std::vector<spdlog::sink_ptr> sinks;
    sinks.push_back(console_sink);
    sinks.push_back(file_sink);
    
    //spdlog::logger *logger = new spdlog::logger("multi_sink", {console_sink, file_sink});
    auto logger = std::make_shared<spdlog::logger>("multi_sink", begin( sinks ), end( sinks ));
    //logger->set_level(spdlog::level::debug);
 
#if 0  //也可以使用这种方式
  
    spdlog::sinks_init_list sink_list = { console_sink->sinks().front(), file_sink->sinks().front() };
    //创建一个新的日志对象,以上面两个日志对象作为初始化参数,即实现了同时输出 console 和 file
    auto log_ptr = spdlog::create("loggername", sink_list);
 
    spdlog::register_logger( combined_logger );
#endif
    err_handler_example();
    
    logger->warn("this should appear in both console and file");
 
    logger->info("this message should appear in file , not in console");
 
    //注册到spdlog里
    spdlog::register_logger(logger);
      
    auto test_logger = spdlog::get("multi_sink");
    test_logger->info("getlogger::helloworld");
 
    std::string msg = "hello world 2019.";
    logger->warn("spdlog: {}", msg);
 
 
 
    auto rotating_logger = spdlog::rotating_logger_mt("log_rotating", "logs/rotating.txt", 256, 2);
        for (int i = 0; i < 10; ++i)
            rotating_logger->info("{} * {} equals {:>10}", i, i, i*i);
    
  }
  catch (const spdlog::spdlog_ex &ex)
  {
    std::cout<<"Log initialization faild"<<ex.what()<<std::endl;
  }
 
}
 
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
监控 Ubuntu 安全
如何在 VPS 上安装和使用 Logwatch 日志分析器和报告工具
如何在 VPS 上安装和使用 Logwatch 日志分析器和报告工具
52 1
|
29天前
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
47 8
|
1月前
|
监控 安全 网络安全
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。
|
4月前
|
Prometheus Cloud Native Perl
评测Loki日志工具
评测Loki日志工具
90 0
|
1月前
|
运维 Prometheus 监控
特定用途的日志分析工具
【10月更文挑战第20天】
69 5
|
1月前
|
存储 机器学习/深度学习 传感器
商业日志分析工具
【10月更文挑战第20天】
57 5
|
1月前
|
存储 运维 监控
开源日志分析工具
【10月更文挑战第20天】
91 3
|
2月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
42 1
|
2月前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
68 0
|
3月前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
下一篇
DataWorks