Prechádzať zdrojové kódy

修改探测器mould使其日志文件可以放到正常的文件夹!
提交日志辅助文件!

lwk 3 dní pred
rodič
commit
496d16d80b

+ 1 - 1
Detector/TiRay/CCOS.Dev.FPD.TiRayDR/CCOS.Dev.FPD.TiRayDR.cpp

@@ -514,7 +514,7 @@ bool nsFPD::TiRayDriver::SetDeviceConfigValue(ResDataObject &config, const char*
 }
 
 nsFPD::FPDDeviceTiRay::FPDDeviceTiRay(std::shared_ptr<IOEventCenter> center, std::string strConfigPath)
-	: m_nFPDExpReadyTime(1000),
+	: FPDDeviceMould("DevTiRay"), m_nFPDExpReadyTime(1000),
 	m_nCalibTotalExposureNum{},
 	m_nCalibCurrentCalibrationRound{1},
 	m_nCalibCurrentExposureIndex{},

+ 1 - 3
Detector/TiRay/CCOS.Dev.FPD.TiRayDR/CCOS.Dev.FPD.TiRayDR.h

@@ -121,9 +121,7 @@ namespace CCOS::Dev::Detail::Detector
 		RET_STATUS UpdateCalibrationFileExpireTime(std::string in);
 		RET_STATUS AbortCalibration();
 		RET_STATUS SaveCalibrationFile(bool bSaveFlag);
-		std::string getLogHostName() const override {
-			return "DevTiRay"; // ×ÓÀàµÄ¾ßÌåÖµ
-		}
+	
 		void OnFPDCallback(int nDetectorID, int nEventID, int nEventLevel, const char* pszMsg, int nParam1, float fParam2, int nPtrParamLen, void* pParam);
 		bool Support_DarkCalib();
 		bool Support_XrayCalib();

+ 19 - 0
Detector/TiRay/CCOS.Dev.FPD.TiRayDR/LogLocalHelper.cpp

@@ -0,0 +1,19 @@
+// LogLocalHelper.cpp
+#include "LogLocalHelper.h"
+#include <string>
+#include <iostream>
+
+// 使用线程局部存储:确保每个动态库有独立的模块名副本
+static std::string s_localModuleName;
+
+// 初始化当前动态库的局部模块名(在调用initLogModule后立即调用)
+void TiRaySetLocalModuleName(const std::string& moduleName) {
+    std::cout << "GEN setLocalModuleName" << moduleName << std::endl;
+    s_localModuleName = moduleName;
+}
+
+// 获取当前动态库的局部模块名(日志输出时调用)
+const std::string& TiRayGetLocalModuleName() {
+    std::cout << "GEN getLocalModuleName" << s_localModuleName << std::endl;
+    return s_localModuleName;
+}

+ 28 - 0
Detector/TiRay/CCOS.Dev.FPD.TiRayDR/LogLocalHelper.h

@@ -0,0 +1,28 @@
+// LogLocalHelper.h
+#ifndef LOG_LOCAL_HELPER_H
+#define LOG_LOCAL_HELPER_H
+#include <string>
+#include "Log4CPP.h"
+
+void TiRaySetLocalModuleName(const std::string& moduleName);
+const std::string& TiRayGetLocalModuleName();
+
+// 重定义日志宏:使用当前动态库的局部模块名getLocalModuleName()
+#define LOG(level, format, ...) \
+    do { \
+        const std::string& localModule = TiRayGetLocalModuleName(); \
+        LogInstance* logger = LogManager::getInstance().getInstance(localModule); \
+        if (logger && logger->isInitialized()) { \
+            logger->log(log4cpp::Priority::level, __FILE__, __LINE__, __FUNCTION__, format, ##__VA_ARGS__); \
+        } else { \
+            std::cerr << "[" << localModule << "] Logger not initialized or module not found!" << std::endl; \
+        } \
+    } while(0)
+
+// 保留原有的级别宏(无需修改,依赖重定义后的LOG)
+#define FDEBUG(format, ...) LOG(DEBUG, format, ##__VA_ARGS__)
+#define FINFO(format, ...)  LOG(INFO,  format, ##__VA_ARGS__)
+#define FWARN(format, ...)  LOG(WARN,  format, ##__VA_ARGS__)
+#define FERROR(format, ...) LOG(ERROR, format, ##__VA_ARGS__)
+
+#endif // LOG_LOCAL_HELPER_H