c++中spdlog的使用/python中logger的使用
个人测试,有问题还请指出,谢谢
一、c++
可以同时在本地保存日志文件和在控制台以不同颜色显示
需要文件包含文件以及依赖库:https://download.csdn.net/download/Word_And_Me_/89556265
1、main.cpp
#include <iostream>
#include "Logger.h"
#pragma warning(disable:4996)
int main() {
initLogger();
logger->info("测试info");
logger->debug("测试debug");
logger->error("测试error");
logger->warn("测试warn");
return 0;
}
运行结果:
2、Logger.h
// #pragma once
#ifndef LOGGER_H
#define LOGGER_H
#include <iostream>
#include <vector>
#include <memory>
#include <spdlog.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/rotating_file_sink.h>
#include <spdlog/sinks/stdout_color_sinks.h>
extern std::shared_ptr<spdlog::logger> logger;
void initLogger();
#endif // !LOGGER_H
3、Logger.cpp
#include "Logger.h"
std::shared_ptr<spdlog::logger> logger;
void initLogger() {
try {
std::shared_ptr<spdlog::sinks::rotating_file_sink_mt> file_sink;
std::shared_ptr<spdlog::sinks::stdout_color_sink_mt> console_sink;
// 创建彩色控制台 sink
console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
console_sink->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%n] [%^%l%$] %v"); // [%^%l%$] 中的 %^ 和 %$ 是颜色标记,%l 是日志级别,这样可以在日志级别部分应用颜色。
console_sink->set_level(spdlog::level::debug);
// 创建一个旋转文件日志记录器,每个文件最大10MB,保留10个文件
// logger_file = spdlog::rotating_logger_mt("running-process", "logs/basic-log.txt", 1024 * 1024 * 10, 10);
// 创建文件 rotating sink
file_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>("logs/basic-log.txt", 1024 * 1024 * 10, 10);
// 设置日志记录器的级别
file_sink->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%n] [%l] %v");
file_sink->set_level(spdlog::level::debug);
std::vector<spdlog::sink_ptr> sinks{ console_sink, file_sink };
logger = std::make_shared<spdlog::logger>("multi_sink", sinks.begin(), sinks.end());
logger->set_pattern("%^[%Y-%m-%d %H:%M:%S.%e] [%n] [%l] %v%$");
logger->set_level(spdlog::level::debug);
spdlog::flush_every(std::chrono::seconds(5));
spdlog::set_default_logger(logger);
}
catch (const spdlog::spdlog_ex& ex) {
std::cout << "日志初始化失败: " << ex.what() << std::endl;
}
}
二、python
import logging
from logging.handlers import TimedRotatingFileHandler
import colorlog
# 设置彩色控制台日志格式
color_formatter = colorlog.ColoredFormatter(
fmt="%(log_color)s[%(asctime)s %(name)s %(levelname)s]%(reset)s %(message)s",
datefmt="%m/%d/%Y %H:%M:%S",
log_colors={
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'bold_red'
}
)
formatter = logging.Formatter(
fmt="[%(asctime)s %(name)s %(levelname)s] %(message)s", datefmt="%m/%d/%Y %H:%M:%S"
)
# 创建一个handler,用于输出到控制台
console_handler = logging.StreamHandler()
console_handler.setFormatter(color_formatter)
console_handler.setLevel(logging.INFO)
save_handler = TimedRotatingFileHandler('log/mylog.log', when='D', interval=7, backupCount=20, encoding='utf-8')
save_handler.suffix = '%Y-%m-%d'
save_handler.setFormatter(formatter)
save_handler.setLevel(logging.INFO)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.addHandler(console_handler)
logger.addHandler(save_handler)
if __name__ == '__main__':
logger.error(2)
# 测试日志输出
logger.debug('debug message' + str("Asa"))
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
运行结果:
原文地址:https://blog.csdn.net/Word_And_Me_/article/details/140543284
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!