|
@@ -6,7 +6,8 @@
|
|
|
|
|
|
|
|
|
#include <string>
|
|
|
-#include <QApplication>
|
|
|
+// #include <filesystem>
|
|
|
+#include <QCoreApplication>
|
|
|
|
|
|
|
|
|
/* 初始化spdlog,输入的是模组名称,可以为空
|
|
@@ -18,63 +19,66 @@
|
|
|
void initLog(QString ModuleName, CLHQLogApi& lhQLog)
|
|
|
{
|
|
|
|
|
|
- try
|
|
|
- {
|
|
|
+ try {
|
|
|
+ /* 创建一个控制台sink */
|
|
|
+ auto sink_consolse = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
|
|
|
/* 创建一个文件sink,每天一个,00:00创建新的 */
|
|
|
// auto sink_file = std::make_shared<spdlog::sinks::daily_file_sink_mt>("FlowChartLog/log.txt",0,0);
|
|
|
/* 自定义的sink */
|
|
|
// std::filesystem::path execPath = std::filesystem::current_path();
|
|
|
- std::string execPath = QApplication::applicationDirPath().toStdString();
|
|
|
+ QString execPath = QCoreApplication::applicationDirPath();
|
|
|
#if defined(Q_OS_WIN32)
|
|
|
#if C_DEBUG
|
|
|
- std::string libName = execPath + "/LHQLogd.dll";
|
|
|
+ QString libName = execPath + "/LHQLogd.dll";
|
|
|
#elif C_RELEASE
|
|
|
- std::string libName = execPath + "/LHQLog.dll";
|
|
|
+ QString libName = execPath + "/LHQLog.dll";
|
|
|
#endif
|
|
|
#elif defined(Q_OS_LINUX)
|
|
|
- std::string libName = execPath + "/libLHQLog.so";
|
|
|
+ QString libName = execPath + "/libLHQLog.so";
|
|
|
#endif
|
|
|
-
|
|
|
+ /* 写入文件的sink */
|
|
|
+ auto sink_custom = std::make_shared<spdlog::sinks::LHLog_file_sink_mt>(&lhQLog, libName, ModuleName);
|
|
|
/* 给默认记录器用的sink */
|
|
|
auto sink_default = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
|
|
|
- /* 创建一个控制台sink */
|
|
|
- auto sink_consolse = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
|
|
|
- /* 创建写入文件的sink */
|
|
|
- auto sink_LHLog = std::make_shared<spdlog::sinks::LHLog_file_sink_mt>(&lhQLog, QString(libName.c_str()), ModuleName);
|
|
|
-
|
|
|
+
|
|
|
/* 修改输出格式 */
|
|
|
- #if C_DEBUG
|
|
|
- sink_consolse->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] [%n] [%s %#] %v %$");
|
|
|
- // sink_file->set_pattern("[%Y-%m-%d %H:%M:%S:%e] [%^%n%$] [%^%l%$] %s %#: %v");
|
|
|
- sink_LHLog->set_pattern("%v");
|
|
|
- sink_default->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e:%e] [%l] [%s %#] %v %$");
|
|
|
- #elif C_RELEASE
|
|
|
- sink_consolse->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] [%n] %v %$");
|
|
|
- // sink_file->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] [%n]: %v %$");
|
|
|
- sink_LHLog->set_pattern("%v");
|
|
|
- sink_default->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] %v %$");
|
|
|
- #endif
|
|
|
+#if defined (C_DEBUG)
|
|
|
+ sink_consolse->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] [%n] [%s %#] %v%$");
|
|
|
+ // sink_file->set_pattern("[%Y-%m-%d %H:%M:%S] [%^%n%$] [%^%l%$] %s %#: %v");
|
|
|
+ sink_custom->set_pattern("%v");
|
|
|
+ sink_default->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] [%s %#] %v%$");
|
|
|
+#elif defined(C_RELEASE)
|
|
|
+ sink_consolse->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] [%n] %v%$");
|
|
|
+ // sink_file->set_pattern("[%Y-%m-%d %H:%M:%S] [%^%n%$] [%^%l%$] %s %#: %v");
|
|
|
+ sink_custom->set_pattern("%v");
|
|
|
+ sink_default->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] %v%$");
|
|
|
+#endif
|
|
|
|
|
|
/* 日志输出方向,终端和文件 */
|
|
|
std::vector<spdlog::sink_ptr> sinks;
|
|
|
sinks.push_back(sink_consolse);
|
|
|
// sinks.push_back(sink_file);
|
|
|
- sinks.push_back(sink_LHLog);
|
|
|
+ sinks.push_back(sink_custom);
|
|
|
|
|
|
/* 设置默认日志记录器,设置成自定义的sink */
|
|
|
spdlog::default_logger()->sinks().clear();
|
|
|
spdlog::default_logger()->sinks().push_back(sink_default);
|
|
|
- spdlog::default_logger()->sinks().push_back(sink_LHLog);
|
|
|
-
|
|
|
+ spdlog::default_logger()->sinks().push_back(sink_custom);
|
|
|
+ // auto vecSinks = spdlog::default_logger()->sinks();
|
|
|
+ // for(auto& sink : vecSinks)
|
|
|
+ // {
|
|
|
+ // SPDLOG_INFO("sink name = {}", typeid(*sink).name());
|
|
|
+ // }
|
|
|
/* 创建一个标准输出 */
|
|
|
auto logger_main = std::make_shared<spdlog::logger>("main",begin(sinks),end(sinks));
|
|
|
- /* 创建一个WebAPI logger */
|
|
|
- auto logger_WebAPI = std::make_shared<spdlog::logger>("WebAPI",begin(sinks),end(sinks));
|
|
|
+ /* 创建一个 FromWebAPI logger */
|
|
|
+ auto logger_webapi = std::make_shared<spdlog::logger>("FromWebAPI",begin(sinks),end(sinks));
|
|
|
|
|
|
|
|
|
/* 注册到注册表 */
|
|
|
spdlog::register_logger(logger_main);
|
|
|
- spdlog::register_logger(logger_WebAPI);
|
|
|
+ spdlog::register_logger(logger_webapi);
|
|
|
+
|
|
|
|
|
|
/* 设置spdlog输出级别,默认的估计不输出debug这个级别
|
|
|
* 这是默认的设置,可以在外面单数设置输出方式
|
|
@@ -86,8 +90,8 @@ void initLog(QString ModuleName, CLHQLogApi& lhQLog)
|
|
|
#elif defined(C_RELEASE)
|
|
|
spdlog::set_level(spdlog::level::info); /* 只输出info以上的输出 */
|
|
|
spdlog::flush_on(spdlog::level::info); /* 设置刷新等级 */
|
|
|
- sink_consolse->set_level(spdlog::level::info); /* 控制台不输出 */
|
|
|
- sink_default->set_level(spdlog::level::info); /* 默认sink也不输出 */
|
|
|
+ // sink_consolse->set_level(spdlog::level::off); /* 控制台不输出 */
|
|
|
+ // sink_default->set_level(spdlog::level::off); /* 默认sink也不输出 */
|
|
|
#endif
|
|
|
|
|
|
// SPDLOG_LOGGER_DEBUG(logger_main,"******* 有行号且debug也能输出 *******");
|
|
@@ -95,4 +99,25 @@ void initLog(QString ModuleName, CLHQLogApi& lhQLog)
|
|
|
catch (const spdlog::spdlog_ex& ex) {
|
|
|
qDebug() << "Log initialization failed: " << ex.what() ;
|
|
|
}
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/* 修改日志输出等级,输入1表示 */
|
|
|
+void changeLogLevel(ELogLevel level)
|
|
|
+{
|
|
|
+ if(ELogLevel::Log_Debug == level)
|
|
|
+ {
|
|
|
+ spdlog::set_level(spdlog::level::debug);
|
|
|
+ spdlog::flush_on(spdlog::level::debug);
|
|
|
+ }
|
|
|
+ else if(ELogLevel::Log_Info == level)
|
|
|
+ {
|
|
|
+ spdlog::set_level(spdlog::level::info);
|
|
|
+ spdlog::flush_on(spdlog::level::info);
|
|
|
+ /* 获取写入文件的sink,release模式下不写入文件 */
|
|
|
+ auto logger = spdlog::get("main");
|
|
|
+ auto sinks = logger->sinks();
|
|
|
+ sinks[1]->set_level(spdlog::level::info);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|