From 1fd49a571338b6c946bb05dcdf59ec1468df5c50 Mon Sep 17 00:00:00 2001
From: SWK <sungwk82@diteam.co.kr>
Date: 목, 22 12월 2022 12:31:43 +0900
Subject: [PATCH] ongoing50 #4403 CF AOI Reveiw TACT 지연 개선 1. 일정 시간 유지 신호 처리 시 동기화로 인한 불합리 개선 - 일정 시간 유지 필요 시 스래드풀 작업큐를 이용하여 루프처리 방식으로 변경 - 유지 신호 처리 중 출력 신호 발생 시 작업큐에 등록하여 유지 신호와 결합하여 출력 처리 2. FDC 보고 항목 중 SW 버전 체크 루프 불합리 개선 - 프로그램 시작 시 연동 프로그램 버전 체크 간 실행되지 않는 프로그램이 있는 경우 무한 루프 발생 - 무한 루프로 인한 CPU 점유 상승->루프 중간 Sleep추가 및 코드 간소화 3. 로그 메시지에 시간 ms단위 추가(황만수SM 작업 내역 병합)

---
 ReviewHistory/include/akCore/akLogger.h |   69 ++++++++++++++++++++++++++++++++++
 1 files changed, 69 insertions(+), 0 deletions(-)

diff --git a/ReviewHistory/include/akCore/akLogger.h b/ReviewHistory/include/akCore/akLogger.h
new file mode 100644
index 0000000..7a4e5f8
--- /dev/null
+++ b/ReviewHistory/include/akCore/akLogger.h
@@ -0,0 +1,69 @@
+#pragma once
+
+#include "akCoreLinker.h"
+#include <queue>
+#include <windows.h>
+#include "akSTL/akQueueCircle.h"
+
+class AKCORE_DLLSPEC CakLogger
+{
+public:
+	CakLogger(int nBufferSize = 200, int nStringLen = 512 );
+	virtual ~CakLogger(void);
+
+	struct _LoggerData 
+	{
+		unsigned int nIndex;
+		char nLevel;
+		char nSection;
+		//char strDate[16];
+		//char strTime[16];
+		SYSTEMTIME stTime;
+		char* pData;
+	};
+
+	//pFileName을 C:\AOIServer\Log\AOILog <- 여기 까지 기입, 그러면 뒤에 날자 붙이고 .log붙여서 파일명 완성 [김태현 2018/11/19]
+	virtual void setWriteFileMode(char* pFileName, int nIntervalWrite = 500);
+	//dit 로그 모드
+	virtual void setWriteFileMode2(char* pPathName, char* pFileName, int nIntervalWrite = 500);
+
+	//TRACE
+	virtual void setLog(char* format, ...);
+	virtual void getDateTime(char* pStrDate, char* pStrTime);
+	
+	virtual void setLogDataToFile(FILE* pf, _LoggerData* pData); //함수 호출전에 동기화 해야함. [김태현 2018/11/19]
+
+	void resetLogCount(BOOL bWaitWrite = TRUE);
+
+	_LoggerData* GetLogData(int nIdx); //가장 나중에 쓴 로그가 0번 [김태현 2018/11/19]
+	int GetLogDataNum(){return m_nLogCount<m_nLogBufferSize?m_nLogCount:m_nLogBufferSize;}; //가장 최근이 0 [김태현 2018/11/19]
+
+public:
+	int getBufferSize(){return m_nLogBufferSize;};
+	int getLogStringLen(){return m_nLogStringLen;};
+
+protected:
+	static void threadLogFileSave(void* pArg);
+	virtual void funcLogFileSave();
+	int m_nThreadFlag;
+	int m_nFileSaveIndex;
+
+protected:
+	int m_nLogBufferSize;
+	int m_nLogStringLen;
+	_LoggerData* m_pLogData;
+	
+	unsigned long m_nLogCount;
+	int m_nLogInputIndex; // [김태현 2018/11/19]
+	int m_nLogWriteIndex;
+
+
+	int m_nLogFileType; //0은 기존 모드, 1은 날자가 앞에 있는 모드
+	char m_strLogPathName[256];
+	char m_strLogFileName[256];
+	int m_nLogFileWriteInterval;
+
+
+	CRITICAL_SECTION	m_csTrace;
+	
+};

--
Gitblit v1.9.3