|
@@ -5,12 +5,16 @@
|
|
|
#include "LHLog_file_sink.h"
|
|
|
|
|
|
|
|
|
-#include <QString>
|
|
|
-#include <QApplication>
|
|
|
+#include <string>
|
|
|
+#include <filesystem>
|
|
|
+
|
|
|
|
|
|
/* 初始化spdlog,输入的是模组名称,可以为空
|
|
|
* lhQLog是一个全局函数,在库LHQLog中定义
|
|
|
+ * 这里获取可执行文件文件夹的路径,使用的是C++17新引入的特性
|
|
|
+ * GCC9会在标准库中,GCC8.3需要手动链接库stdc++fs才可以使用
|
|
|
*/
|
|
|
+
|
|
|
void initLog(QString ModuleName, CLHQLogApi& lhQLog)
|
|
|
{
|
|
|
|
|
@@ -20,16 +24,18 @@ void initLog(QString ModuleName, CLHQLogApi& lhQLog)
|
|
|
/* 创建一个文件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();
|
|
|
#if defined(Q_OS_WIN32)
|
|
|
#if C_DEBUG
|
|
|
- QString libName = QApplication::applicationDirPath() + "/LHQLogd.dll";
|
|
|
+ std::string libName = execPath.string() + "/LHQLogd.dll";
|
|
|
#elif C_RELEASE
|
|
|
- QString libName = QApplication::applicationDirPath() + "/LHQLog.dll";
|
|
|
+ std::string libName = execPath.string() + "/LHQLog.dll";
|
|
|
#endif
|
|
|
#elif defined(Q_OS_LINUX)
|
|
|
- QString libName = QApplication::applicationDirPath() + "/libLHQLog.so";
|
|
|
+ std::string libName = execPath.string() + "/libLHQLog.so";
|
|
|
#endif
|
|
|
- auto sink_custom = std::make_shared<spdlog::sinks::LHLog_file_sink_mt>(&lhQLog, libName, ModuleName);
|
|
|
+ /* 写入文件的sink */
|
|
|
+ auto sink_custom = std::make_shared<spdlog::sinks::LHLog_file_sink_mt>(&lhQLog, QString(libName.c_str()), ModuleName);
|
|
|
/* 给默认记录器用的sink */
|
|
|
auto sink_default = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
|
|
|
|
|
@@ -58,13 +64,19 @@ void initLog(QString ModuleName, CLHQLogApi& lhQLog)
|
|
|
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));
|
|
|
- /* 创建一个发射机通用 Logger */
|
|
|
- auto logger_SuperBrain = std::make_shared<spdlog::logger>("SuperBrain",begin(sinks),end(sinks));
|
|
|
+ /* 创建一个FromSuperBrain Logger */
|
|
|
+ auto logger_FromSuperBrain = std::make_shared<spdlog::logger>("FromSuperBrain",begin(sinks),end(sinks));
|
|
|
+ /* 创建一个SPAServer logger */
|
|
|
+ auto logger_SPAServer = std::make_shared<spdlog::logger>("SPAServer",begin(sinks),end(sinks));
|
|
|
+ /* 创建一个FromRedis logger */
|
|
|
+ auto logger_FromRedis = std::make_shared<spdlog::logger>("FromRedis",begin(sinks),end(sinks));
|
|
|
|
|
|
/* 注册到注册表 */
|
|
|
spdlog::register_logger(logger_main);
|
|
|
spdlog::register_logger(logger_WebAPI);
|
|
|
- spdlog::register_logger(logger_SuperBrain);
|
|
|
+ spdlog::register_logger(logger_FromSuperBrain);
|
|
|
+ spdlog::register_logger(logger_SPAServer);
|
|
|
+ spdlog::register_logger(logger_FromRedis);
|
|
|
|
|
|
/* 设置spdlog输出级别,默认的估计不输出debug这个级别
|
|
|
* 这是默认的设置,可以在外面单数设置输出方式
|