spdlog

#include <iostream>
#include <string>
#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/rotating_file_sink.h>

using namespace std;

#define log_path_address "D:\\ALearn\\work\\can_pro_work\\log\\test.log"
#define log_path_address2 "D:\\ALearn\\work\\can_pro_work\\log\\test1.txt"

//
int test01() {
	// 创建控制台日志记录器,支持彩色输出
	//使用 stdout_color_mt 创建一个支持多线程的彩色控制台日志记录器
	auto console = spdlog::stdout_color_mt("console");

	// 设置日志级别
	//使用 spdlog::set_level() 设置全局日志级别,例如 info、warn、error 等
	/*通过设置日志级别,只有高于或等于指定级别的日志信息才会被输出。例如,设置为 info 后:
		info、warn、error 和 critical 级别的日志会被输出。
		debug 和 trace 级别的日志将被忽略。*/
	spdlog::set_level(spdlog::level::info); // 设置全局日志级别为 INFO

	// 日志输出示例
	  /*spdlog::level::trace: 最详细的日志
		spdlog::level::debug : 调试信息
		spdlog::level::info : 一般信息
		spdlog::level::warn : 警告
		spdlog::level::err : 错误
		spdlog::level::critical : 严重错误
		spdlog::level::off : 关闭日志*/
	console->info("Hello, {}!", "world");
	console->warn("This is a warning message.");
	console->error("This is an error message.");
	return 1;
}

//记录在日志文件中
int test02() {
	// 创建一个名为 "example_logger" 的日志记录器,日志将写入到 "example.log" 文件中
	auto example_logger = spdlog::basic_logger_mt("example_logger", log_path_address);
	// 设置日志级别为 info,低于此级别的日志(如 debug)将不会被记录
	example_logger->set_level(spdlog::level::info);
	// 设置日志格式
	example_logger->set_pattern("[%T] %n: %v");
	// 使用不同级别的日志记录
	example_logger->info("这是一条信息日志");
	example_logger->warn("这是一条警告日志");
	example_logger->error("这是一条错误日志");
	// 可以关闭日志记录器,虽然不是必须的,但是好的习惯
	spdlog::shutdown();
	return 1;
}
int test03() {
	// 保留 1 个日志文件
	// 每个日志文件最大大小
	auto rotating_logger = spdlog::rotating_logger_mt("rotating_logger_example",
		log_path_address,110,0); 
	// 设置日志级别为 info
	rotating_logger->set_level(spdlog::level::trace);
	// 设置日志格式
	rotating_logger->set_pattern("[%T] %n: %v");
	// 记录一些日志消息
	for (int i = 0; i < 30; ++i){
		rotating_logger->info("这是第 {} 条信息日志", i);
	}
	rotating_logger->flush();
	// 关闭所有注册的日志记录器
	spdlog::shutdown();
	return 1;
}
int test04() {
	// 创建旋转文件日志记录器,设置最大文件大小为 5 MB,保留 3 个文件
	auto file_logger = spdlog::rotating_logger_mt("rotating_logger_example", log_path_address, 255,5);
	// 创建控制台日志记录器,支持彩色输出
	auto console_logger = spdlog::stdout_color_mt("console");
	// 设置日志级别
	spdlog::set_level(spdlog::level::info);
	// 日志输出示例
	for (int i = 0; i < 10000; ++i) {
		file_logger->info("This is log message number {}", i);
		console_logger->info("This is log message number {}", i);
	}
	return 0;
}
int test05() {
	// 创建旋转文件日志记录器,设置最大文件大小为 5 MB,保留 3 个文件
	auto file_logger = spdlog::rotating_logger_mt("rotating_logger_example", log_path_address, 5 * 1024 * 1024, 3);

	// 创建控制台日志记录器,支持彩色输出
	auto console_logger = spdlog::stdout_color_mt("console");

	// 设置日志级别为 info
	file_logger->set_level(spdlog::level::info);
	console_logger->set_level(spdlog::level::info);

	// 设置日志格式
	file_logger->set_pattern("[%Y-%m-%d %H:%M:%S] [%n] [thread %t] %v");
	console_logger->set_pattern("[%Y-%m-%d %H:%M:%S] [%n] [thread %t] %v");

	// 记录一些日志消息
	for (int i = 0; i < 10000; ++i) {
		file_logger->info("This is log message number {}", i);
		console_logger->info("This is log message number {}", i);
	}

	// 确保所有日志被写入
	spdlog::shutdown();
	return 1;
}
int main() {
	test05();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值