• easylogging++ 使用笔记(ubuntu 20.04)


    前言

    以下在ubuntu20.04上测试过,windows未测试。

    1. 多线程支持

    基本使用方法都可以百度到,这里说一下线程安全的设置;
    easylogging 有一个支持线程安全的宏定义,需要添加到CMakeLists.txt里:

    cmake_minimum_required(VERSION 3.16.1)
    project(project_name)
    # 定义easylogging支持线程安全的宏定义
    add_definitions(-DELPP_THREAD_SAFE)
    
    • 1
    • 2
    • 3
    • 4

    可以在代码里测试是否开启多线程支持:

    #ifdef ELPP_THREAD_SAFE
        LOG(DEBUG) << "easylogging++ | 已定义 ELPP_THREAD_SAFE,easylogging++ 线程安全!";
    #else
        LOG(ERROR) << "easylogging++ | 未定义 ELPP_THREAD_SAFE,easylogging++ 线程不安全!程序可能崩溃,请定义 ELPP_THREAD_SAFE!";
    #endif
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2. 日志分级

    以下为自己的理解,并不专业。
    LOG(INFO) << “打印程序运行的过程” + “参数信息提示”;;
    LOG(DEBUG) << “打印参数信息”;
    LOG(WARNING) << “非必要功能失败”;
    LOG(ERROR) << “必要服务连接失败”;
    LOG(FATAL) << “引发程序崩溃现场的信息”;

    3. 重定义easylogging++配置

        // 重定义easylog配置
        el::Configurations conf("../config/log.conf");
        conf.set(el::Level::Info, el::ConfigurationType::Format, Green + std::string("[%datetime %level] ") + "%msg" + Reset);
        conf.set(el::Level::Debug, el::ConfigurationType::Format, Blue + std::string("[%datetime %level] ") + "%msg" + Reset);
        conf.set(el::Level::Warning, el::ConfigurationType::Format, Yellow + std::string("[%datetime %level] ") + "%msg" +Reset);
        conf.set(el::Level::Error, el::ConfigurationType::Format, Red + std::string("[%datetime %level] ") + "%fbase:%line" + " | %msg" + Reset);
        conf.set(el::Level::Fatal, el::ConfigurationType::Format, Red + std::string("[%datetime %level] ") + "%fbase:%line" + " | %msg" + Reset);
        el::Loggers::reconfigureAllLoggers(conf);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4. 使用效果

        LOG(INFO) << "我是LOG(INFO)";
        LOG(DEBUG) << "我是LOG(DEBUG)";
        LOG(WARNING) << "我是LOG(WARNING)";
        LOG(ERROR) << "我是LOG(ERROR)";
        LOG(FATAL) << "我是LOG(FATAL)";
    
    • 1
    • 2
    • 3
    • 4
    • 5

    效果图(有水印,问题不大)
    在这里插入图片描述

  • 相关阅读:
    【计算机组成&体系结构】存储系统基本概念
    flink&kafka-connector消费 protobuf格式数据
    背包问题~
    S7-1500 PLC之间进行TCP通信的具体方法和步骤详解(图文)
    让代码变美的第二天 - 策略模式
    Vue3的computed计算属性和watch监视(四)
    因为做了这样的项目,成为了offer收割机!
    BUUCTF 大白 1
    Springboot实战:redisson分布式缓存、分布式锁详细教程(附git源码)
    MongoDB是什么、有哪些优势、对比mysql,es、docker安装
  • 原文地址:https://blog.csdn.net/weixin_44557375/article/details/125631844