当前位置: 首页 > news >正文

【日志库】—— log4cpp 部署套路

部署:

1、安装log4cpp,执行如下指令进行编译安装
log4cpp的官网是:
http://log4cpp.sourceforge.net/

wget https://nchc.dl.sourceforge.net/project/log4cpp/log4cpp-1.1.x%20%28new%29/log4cpp-1.1/log4cpp-1.1.3.tar.gz
tar xzvf log4cpp-1.1.3.tar.gz
cd log4cpp-1.1.3
./configure  
make
make install

安装完毕后,log4cpp库路径在 /usr/local/lib、头文件路径在 /usr/local/include/log4cpp

可以使用命令 mv 拷贝到自己的项目路径中去;例如,创建一个lib文件夹,将刚刚安装的log4cpp的lib库文件拷贝到此文件夹中。

头文件同理。

示例1:

#include <log4cpp/Category.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/PatternLayout.hh>
#include <log4cpp/OstreamAppender.hh>
#include <log4cpp/PropertyConfigurator.hh>

#define LOG(__level) log4cpp::Category::getRoot() << log4cpp::Priority::__level << __FILE__ << " " << __LINE__ << ": "

int main() {

        log4cpp::PropertyConfigurator::configure("log4cpp.conf");

        log4cpp::Category &root = log4cpp::Category::getRoot();
        root.setPriority(log4cpp::Priority::INFO);

        LOG(DEBUG) << "i am happy.";
        LOG(INFO)  << "oh, you happy, we happy.";
        LOG(NOTICE)<< "please do not contact me. ";
        LOG(WARN)  << "i am very busy now.";
        LOG(ERROR) << "oh, what happed?";

    return 0;
}
创建 test.conf:日志的配置文件
#定义Root category的属性
log4cpp.rootCategory=DEBUG, RootLog

#定义RootLog属性
log4cpp.appender.RootLog=RollingFileAppender
log4cpp.appender.RootLog.layout=PatternLayout
#log4cpp.appender.RootLog.layout.ConversionPattern=%d{% m-%d %H:%M:%S %l} [%t][%p]%m%n
log4cpp.appender.RootLog.layout.ConversionPattern=%d{%m-%d %H:%M:%S %l} [%t][%p]%m%n

#日志位置:自定义
log4cpp.appender.RootLog.fileName=/root/log/test/dry.log
log4cpp.appender.RootLog.maxFileSize=268435456 #256MB
log4cpp.appender.RootLog.fileNamePattern=dry_%i.log
log4cpp.appender.RootLog.maxBackupIndex=256

示例2:

#include <log4cpp/Category.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/PatternLayout.hh>
#include <log4cpp/OstreamAppender.hh>
#include <log4cpp/PropertyConfigurator.hh>

#define LOG(__level) log4cpp::Category::getRoot() << log4cpp::Priority::__level << __FILE__ << " " << __LINE__ << ": "

int main() {
    // 输出到std::cout 控制台
    //log4cpp::Appender *appender = new log4cpp::OstreamAppender("root", &std::cout);

    // 配置日志输出到当前目录的 log.log 日志文件中
    log4cpp::Appender *appender = new log4cpp::FileAppender("root", "log.log");
    appender->setLayout(new log4cpp::BasicLayout());

        log4cpp::PatternLayout *patternLayout = new log4cpp::PatternLayout();
        patternLayout->setConversionPattern("%d [%p] - %m%n");
        appender->setLayout(patternLayout);

        log4cpp::Category &root = log4cpp::Category::getRoot();
        root.setPriority(log4cpp::Priority::INFO);
        root.addAppender(appender);

        LOG(DEBUG) << "i am happy.";
        LOG(INFO)  << "oh, you happy, we happy.";
        LOG(NOTICE)<< "please do not contact me. ";
        LOG(WARN)  << "i am very busy now.";
        LOG(ERROR) << "oh, what happed?";

    return 0;
}

解释:

category:设置类别输出

priority:   日志优先级 --> 低于该级别的日志不会被记录

( DEBUG < INFO < NOTICE < WARN < ERROR < FATAL )

相关文章:

  • [极客大挑战 2019]BabySQL—3.20BUUCTF练习day4(3)
  • 传感器研习社:Swift Navigation与意法半导体(STMicroelectronics)合作 共同推出端到端GNSS汽车自动驾驶解决方案
  • IM项目 ----- 项目部署
  • SZU软件工程大学生涯 2022~2026
  • 语言大模型之BERT
  • Java 大视界 -- Java 大数据中的知识图谱可视化与交互分析技术(141)
  • 数据库面试题一
  • 开箱即用:免费的数据库管理平台 NineData 社区版
  • 安装和部署Tomcat并在idea创建web文件
  • 在linux服务器部署Heygem
  • pdf文件分页按需查看
  • c库、POSIX库、C++库、boost库之间的区别和联系
  • 自动驾驶背后的数学:多模态传感器融合的简单建模
  • 星玲之战.重启誓约(第四章)
  • 玩转C#函数:参数、返回值与游戏中的攻击逻辑封装
  • 日做力扣题3 -- 206. 反转链表
  • Day11 动态规划入门
  • 第11章:Kubernetes架构详解:控制平面与数据平面
  • 学习CSS滤镜属性 `filter: invert()`
  • 目标检测20年(二)
  • 浙江省台州市政协原副主席林虹被“双开”
  • 病重老人被要求亲自取钱在农业银行门口去世?株洲警方介入
  • 中国结算澄清“严查场外配资”传闻:账户核查为多年惯例,无特殊安排
  • 中哥两国元首共同见证签署《中华人民共和国政府与哥伦比亚共和国政府关于共同推进丝绸之路经济带和21世纪海上丝绸之路建设的合作规划》
  • 重庆市委原常委、政法委原书记陆克华被决定逮捕
  • 海运港口股掀涨停潮!回应关税下调利好,有货代称美线舱位爆了