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