From 63686244746925d43248ceaf8d9e31f50df68a72 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 01 九月 2025 17:21:43 +0800
Subject: [PATCH] Merge branch 'clh'
---
SourceCode/Bond/SGMeasurement/Logger.cpp | 79 +++++++++++++++++++++++++++++++++++++++
1 files changed, 79 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/SGMeasurement/Logger.cpp b/SourceCode/Bond/SGMeasurement/Logger.cpp
new file mode 100644
index 0000000..1908277
--- /dev/null
+++ b/SourceCode/Bond/SGMeasurement/Logger.cpp
@@ -0,0 +1,79 @@
+#include "pch.h"
+#include "Logger.h"
+
+CLogger& CLogger::Instance()
+{
+ static CLogger instance;
+ return instance;
+}
+
+CLogger::CLogger()
+{
+ OpenLogFile();
+}
+
+CLogger::~CLogger()
+{
+ CloseLogFile();
+}
+
+void CLogger::OpenLogFile()
+{
+ CSingleLock lock(&m_csLogLock, TRUE);
+
+ CTime now = CTime::GetCurrentTime();
+ CString strLogDir = _T("Log");
+
+ if (!PathFileExists(strLogDir)) {
+ CreateDirectory(strLogDir, NULL);
+ }
+
+ CString strNewPath;
+ strNewPath.Format(_T("%s\\SG_%04d%02d%02d.log"), strLogDir, now.GetYear(), now.GetMonth(), now.GetDay());
+
+ if (m_strCurrentLogPath.CompareNoCase(strNewPath) != 0 || m_logFile.m_pStream == nullptr) {
+ if (m_logFile.m_pStream) {
+ m_logFile.Flush();
+ m_logFile.Close();
+ }
+
+ if (m_logFile.Open(strNewPath,
+ CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite | CFile::typeBinary)) {
+
+ if (m_logFile.GetLength() == 0) {
+ WCHAR bom = 0xFEFF;
+ m_logFile.Write(&bom, sizeof(WCHAR));
+ }
+
+ m_logFile.SeekToEnd();
+ m_strCurrentLogPath = strNewPath;
+ }
+ }
+}
+
+void CLogger::WriteLine(CString str)
+{
+ CSingleLock lock(&m_csLogLock, TRUE);
+
+ OpenLogFile();
+
+ if (m_logFile.m_pStream) {
+ CTime now = CTime::GetCurrentTime();
+ CString strTime;
+ strTime.Format(_T("[%02d:%02d:%02d]"), now.GetHour(), now.GetMinute(), now.GetSecond());
+
+ CString strLine = strTime + str + _T("\r\n");
+ m_logFile.Write((LPCTSTR)strLine, strLine.GetLength() * sizeof(WCHAR));
+ }
+}
+
+void CLogger::CloseLogFile()
+{
+ CSingleLock lock(&m_csLogLock, TRUE);
+
+ if (m_logFile.m_pStream) {
+ m_logFile.Flush();
+ m_logFile.Close();
+ m_strCurrentLogPath.Empty();
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.3