boost写日志

单个写日志

#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/support/date_time.hpp>int main() {boost::log::add_file_log(boost::log::keywords::file_name = "example.log",boost::log::keywords::rotation_size = 10 * 1024 * 1024,boost::log::keywords::format = (boost::log::expressions::stream<< "[" << boost::log::expressions::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S.%f") << "]"<< "[" << boost::log::trivial::severity << "]"<< " " << boost::log::expressions::smessage));boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::debug);boost::log::add_common_attributes();BOOST_LOG_TRIVIAL(debug) << "Hello, Boost log!";return 0;
}

根据日志等级写日志

#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/support/date_time.hpp>int main() {// 为 info 级别日志设置接收器boost::log::add_file_log(boost::log::keywords::file_name = "info.log",boost::log::keywords::filter = boost::log::trivial::severity == boost::log::trivial::info,boost::log::keywords::format = (boost::log::expressions::stream<< "[" << boost::log::expressions::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S.%f") << "]"<< "[" << boost::log::trivial::severity << "]"<< " " << boost::log::expressions::smessage));// 为 error 级别日志设置接收器boost::log::add_file_log(boost::log::keywords::file_name = "error.log",boost::log::keywords::filter = boost::log::trivial::severity == boost::log::trivial::error,boost::log::keywords::format = (boost::log::expressions::stream<< "[" << boost::log::expressions::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S.%f") << "]"<< "[" << boost::log::trivial::severity << "]"<< " " << boost::log::expressions::smessage));boost::log::add_common_attributes();BOOST_LOG_TRIVIAL(info) << "This is an info message.";BOOST_LOG_TRIVIAL(error) << "This is an error message.";return 0;
}

自定义过滤器

#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/attributes/named_scope.hpp>
#include <boost/log/sources/record_ostream.hpp>
#include <boost/log/sources/severity_logger.hpp>namespace logging = boost::log;
namespace attrs = boost::log::attributes;
namespace src = boost::log::sources;
namespace expr = boost::log::expressions;// 自定义属性
BOOST_LOG_ATTRIBUTE_KEYWORD(module, "Module", std::string)int main() {// 为 ModuleA 设置接收器logging::add_file_log(logging::keywords::file_name = "moduleA.log",logging::keywords::filter = module == "ModuleA",logging::keywords::format = (expr::stream<< "[" << expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S.%f") << "]"<< "[" << logging::trivial::severity << "]"<< "[" << module << "]"<< " " << expr::smessage));// 为 ModuleB 设置接收器logging::add_file_log(logging::keywords::file_name = "moduleB.log",logging::keywords::filter = module == "ModuleB",logging::keywords::format = (expr::stream<< "[" << expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S.%f") << "]"<< "[" << logging::trivial::severity << "]"<< "[" << module << "]"<< " " << expr::smessage));logging::add_common_attributes();src::severity_logger<logging::trivial::severity_level> lg;auto modulea=lg.add_attribute("Module", attrs::constant<std::string>("ModuleA"));BOOST_LOG_SEV(lg, logging::trivial::info) << "This is a message from ModuleA.";lg.remove_attribute(modulea.first);lg.add_attribute("Module", attrs::constant<std::string>("ModuleB"));BOOST_LOG_SEV(lg, logging::trivial::info) << "This is a message from ModuleB.";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/32880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1037:计算2的幂

【题目描述】 给定非负整数n&#xff0c;求2^n的值&#xff0c;即2的n次方。 【输入】 一个整数n。0<n<31。 【输出】 一个整数&#xff0c;即2的n次方。 【输入样例】 3 【输出样例】 8 【参考答案】&#xff1a; #include<bits/stdc.h> using namespa…

服务管理和计划任务

文章目录 服务管理计划任务 服务管理 systemctl 命令字 服务名 //配置服务与systemctl有关的命令字&#xff1a; 计划任务 一次性计划 at 时间 at now 5 min //当前时间五分钟后执行 at -l //列出计划任务 atrm 任务号 //删除计划任务执行完命令后Ctrld生效 周期性计…

Oracle数据迁移

问题描述&#xff1a; oracle数据库的所有表结构、数据、索引等需要需从测试库迁移到正式库。 解决步骤&#xff1a; oracle数据库迁移&#xff0c;主要通过expdp从测试库所在的源服务器将指定的数据表或数据源导出为一个或多个数据文件&#xff08;.dmp文件&#xff09;&…

黑马项目一完结后阶段面试45题 JavaSE基础部分20题(一)

一、Java数据类型 基本数据类型——四类八种 整数型 byte short int long 浮点型 float double 字符型 char 布尔型 boolean 引用数据类型 String字符串 类&#xff08;对象&#xff09; 接口类型 数组类型 枚举类型 二、面向对象的三大特性 1.封装 把同一类事物…

添加SQLCipher 到项目中

文章目录 一、克隆下载SQLCipher二、手动导入1. 生成sqlite3.c2. 在项目中添加命令3. 添加 Security.framework 三、CocoaPods导入 SQLCipher官方地址 一、克隆下载SQLCipher $ cd ~/Documents/code $ git clone https://github.com/sqlcipher/sqlcipher.git二、手动导入 1.…

二叉树小结

二叉树 树的遍历(如何遍历&#xff0c;如何利用特性问题) 前序遍历&#xff08;中前后&#xff09; 递归 class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res new ArrayList<>();inorder(root, res);return res…

电商系统架构设计系列(八):订单数据越来越多,数据库越来越慢该怎么办?

上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;订单数据越来越多&#xff0c;数据库越来越慢该怎么办&#xff1f; 今天这篇文章&#xff0c;我们来聊一下如何应对数据的持续增长&#xff0c;特别是像订单数据这种会随着时间一直累积的数据。 引言 为什么数据量越大…

shell从入门到精通(19)特殊变量

​ ​参考:Special Parameters (Bash Reference Manual) (gnu.org) 文章目录 $0$*$@$?变量名称作用$0当前脚本的文件名,不一定是全路径,取决于执行时传入的脚本路径$n叫做位置参数,n≥1 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第…

成考本科和国开本科哪个认可度高些 应该选择哪个

成考本科和国开本科都属于成人教育&#xff0c;两种学历都能为您提供知识、技能和学术背景&#xff0c;为您的职业道路打下坚实的基础。选择哪种学历取决于您的学习兴趣、时间安排和职业目标。 成考本科和国开本科谁认可度高 成人高等教育考试(成考)本科和国家开放大学(国开)本…

jenkins容器内CI/CD 项目失败问题

问题&#xff1a; 在jenkins 的docker容器内CI/CD制作vue项目镜像失败 1、docker权限问题 permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs%…

【idea】点击idea启动没反应

RT 点击idea启动的时候没反应&#xff0c;接着百度报错&#xff0c;基本跟他们的也不一样。 首先我是做版本升级。其次&#xff0c;我之前是破解的。如果你也是跟我一样的话&#xff0c;那问题可能就处在破解上了 解决方式 首先&#xff0c;是跟大部分解决思路一样。先找到项…

分清性能测试,负载测试,压力测试这三个的区别

做测试一年多来&#xff0c;虽然平时的工作都能很好的完成&#xff0c;但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺&#xff0c;所以&#xff0c;在工作之余也做了一些测试方面的知识的补充。不足之处&#xff0c;还请大家多多交流&#xff0c;互相学习。 …

C++笔记之单例模式

C笔记之单例模式 参考笔记&#xff1a;C笔记之call_once和once_flag code review 文章目录 C笔记之单例模式1.返回实例引用2.返回实例指针3.单例和智能指针share_ptr结合4.单例和std::call_once结合5.单例和std::call_once、unique_ptr结合 1.返回实例引用 代码 #include <…

ubuntu 如何命令行打开系统设置(Wifi,网络,应用程序...)

关于GNOME GNOME 是一个自由、开放源代码的桌面环境&#xff0c;它运行在 Linux 和其他类 UNIX 操作系统上。它是 GNU 项目的一部分&#xff0c;旨在为 Linux 操作系统提供一个现代化、易于使用的用户界面。 GNOME 桌面环境包括许多应用程序&#xff0c;例如文件管理器、文本编…

Java“牵手拼多多商品详情数据采集方法,拼多多API接口申请指南

拼多多详情接口 API 是开放平台提供的一种 API 接口&#xff0c;它可以帮助开发者获取商品的详细信息&#xff0c;包括商品的标题、描述、图片等信息。在电商平台的开发中&#xff0c;详情接口API是非常常用的 API&#xff0c;因此本文将详细介绍详情接口 API 的使用。 一、拼…

前端-NVM,Node.js版本管理

NVM&#xff08;Node Version Manager&#xff09;是一个用于管理Node.js版本的工具&#xff0c;主要用于前端开发中。它允许开发者同时安装和切换不同版本的Node.js&#xff0c;以满足不同项目对Node.js版本的需求。 使用NVM可以带来以下几个好处&#xff1a; 多版本管理&…

侯捷 C++ part2 兼谈对象模型笔记——5 三个C++11新特性

5 三个C11新特性 5.1 variadic templates 模板参数可变化&#xff0c;其语法为 ... (加在哪看情况) // 当参数pack里没有东西了就调用这个基本函数结束输出 void print() { }// 用于打印多个参数的可变参数模板函数 template <typename T, typename... Args> void pri…

SQL Developer中的Data Redaction

SQL Developer中的Data Redaction用起来比命令行方便多了。可以选定表或视图&#xff0c;右键点击“遮盖保护”菜单。 但赋权方面有需要注意的地方。 假设Redact Admin是SYS&#xff0c;Redact User是HR。虽然SYS具备所有权限&#xff0c;但还是报以下错误。其实这个错误是针…

湖南科技学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》

湖南科技学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》

lua中执行luci.sys.call、luci.sys.exec、os.execute的区别

相同点&#xff1a;都是调用Linux底层脚本及程序 不同点&#xff1a; &#xff08;1&#xff09;luci.sys.call(command) 脾气捉摸不透&#xff0c;实际使用有些时候没有得到任何状态或数据返回&#xff0c;纯粹被用了一下。 &#xff08;2&#xff09;luci.sys.exec(command) …