spdlog2

在这里插入图片描述

  • CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(spdlog_examples CXX)

# set(SPDLOG_DIR ${CMAKE_SOURCE_DIR})
# include_directories(${SPDLOG_DIR})
set(CMAKE_CXX_STANDARD 11)
find_package(spdlog REQUIRED)
# add_executable(example example.cpp)
# target_link_libraries(example PRIVATE spdlog::spdlog) # 依赖了spdlog::spdlog,即spdlog,即静态库
add_executable(example1 example1.cpp)
target_link_libraries(example1 PRIVATE spdlog::spdlog) # 依赖了spdlog::spdlog,即spdlog,即静态库
  • example1.cpp
    `
//  https://blog.csdn.net/tutou_gou/article/details/121284474
#include <iostream>
#include "spdlog/spdlog.h"
#include "spdlog/sinks/basic_file_sink.h" // support for basic file logging

#include "spdlog/sinks/rotating_file_sink.h" // support for rotating file logging
#include "spdlog/sinks/daily_file_sink.h"

#include "spdlog/async.h"
int main()
{
    try 
    {
        //在logs/basic.txt中写下Hello world
        auto my_logger = spdlog::basic_logger_mt("sbasic_logger", "../logs/basic.txt");
        my_logger->info("Hello {}", "world");
    }
    catch (const spdlog::spdlog_ex& ex)
    {
        std::cout << "Log initialization failed: " << ex.what() << std::endl;
    }

    try{
        auto file_logger = spdlog::rotating_logger_mt("file_logger", "../logs/myfilename", 
                                                      1024 * 1024 * 5, 10);
	    file_logger->set_level(spdlog::level::debug);
        int i = 0;
        while (i < 1000000)
        {
            file_logger->debug("Async message #{}", i);
            i++;
        }


    }
    catch(const spdlog::spdlog_ex& ex){
         std::cout << "Log initialization failed: " << ex.what() << std::endl;



    }



    try{
        // Create a file rotating logger with 5mb size max and 3 rotated files
        auto max_size = 1048576 * 5;
        auto max_files = 3;
        auto logger = spdlog::rotating_logger_mt("some_logger_name", "../logs/rotating.txt", max_size, max_files);
        logger->set_level(spdlog::level::debug);
        int i = 0;
        while (i < 1000000)
        {
            logger->debug("Async message #{}", i);
            i++;
        }


    }
    catch(const spdlog::spdlog_ex& ex){
            std::cout << "Log initialization failed: " << ex.what() << std::endl;

    }

    // Create a daily logger - a new file is created every day on 2:30am
    auto daily_logger = spdlog::daily_logger_mt("daily_logger","../logs/daily.txt",11,16);
    // trigger flush if the log severity is error or higher
    daily_logger->flush_on(spdlog::level::err);
	daily_logger->info(123.44);
    spdlog::drop_all();

    try{
        spdlog::init_thread_pool(10000, 1);
        auto file_logger = spdlog::rotating_logger_mt<spdlog::async_factory>("file_logger", "../logs/mylogs.txt", 1024 * 1024 * 5, 4);
        int i = 0;
        file_logger->set_level(spdlog::level::debug);
        while (i < 1000000)
        {
            file_logger->debug("Async message #{}", i);
            i++;
        }


    }
    catch(const spdlog::spdlog_ex& ex){
        std::cout << "Log initialization failed: " << ex.what() << std::endl;

    }
}
  • example.cpp
//直接包含头文件即可使用
//Basic usage
#include<spdlog/spdlog.h>

//Create stdout/stderr logger object
#include "spdlog/sinks/stdout_color_sinks.h"
void stdout_example()
{
    // create color multi threaded logger
    auto console = spdlog::stdout_color_mt("console");    
     auto err_logger = spdlog::stderr_color_mt("stderr");    
    spdlog::get("console")->info("loggers can be retrieved from a global registry using the spdlog::get(logger_name)");
    spdlog::get("stderr")->info("loggers can be retrieved from a global registry using the spdlog::get(logger_name_std_err)");
}

int main(){
    spdlog::info("Welcome to spdlog version {}.{}.{}  !", SPDLOG_VER_MAJOR, SPDLOG_VER_MINOR, SPDLOG_VER_PATCH);
    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:{o:b}",42);
    spdlog::info("Support for floats {:00.2f}",1.23456);
    spdlog::info("Positional args are {1} {0}..","too","support");
    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");
     spdlog::info("---------------------------");
    spdlog::info("Welcome to spdlog version {}.{}.{}  !", SPDLOG_VER_MAJOR, SPDLOG_VER_MINOR, SPDLOG_VER_PATCH);
    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:{o:b}",42);
    spdlog::info("Support for floats {:00.2f}",1.23456);
    spdlog::info("Positional args are {1} {0}..","too","support");
    spdlog::info("{:<30}","left aligned");

        // Compile time log levels
    // define SPDLOG_ACTIVE_LEVEL to desired level
    spdlog::info("---------------------------");
    SPDLOG_TRACE("Some trace message with param {}", 42);
    SPDLOG_DEBUG("Some debug message");

    stdout_example();

    

    
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值