거래 로봇을 무료로 다운로드 하는 법을 시청해보세요
당사를 Facebook에서 찾아주십시오!
당사 팬 페이지에 가입하십시오
스크립트가 흥미로우신가요?
그렇다면 링크 to it -
하셔서 다른 이들이 평가할 수 있도록 해보세요
스크립트가 마음에 드시나요? MetaTrader 5 터미널에서 시도해보십시오
라이브러리

Logging Class for both MQL4 and MQL5 - MetaTrader 5용 라이브러리

조회수:
46
평가:
(7)
게시됨:
Logging.mq5 (9.08 KB) 조회
\MQL5\Include\
Logging.mqh (44.87 KB) 조회
MQL5 프리랜스 이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동

CDebugLogger 클래스: MQL4/5를 위한 포괄적인 로깅 유틸리티

CDebugLogger 클래스는 MQL4/5 환경을 위해 특별히 설계된 강력하고 유연한 로깅 유틸리티입니다. 애플리케이션의 동작을 정밀하게 모니터링, 디버그 및 추적해야 하는 개발자에게 필수적인 도구입니다. 아래에서 이 클래스의 주요 특징과 기능을 살펴보세요.

주요 기능

  • 다중 로그 수준: CDebugLogger 클래스는 정보, 경고, 오류, 디버그 등 중요도에 따라 다양한 수준의 로깅을 지원합니다. 이를 통해 개발자는 특정 중요도가 높은 메시지를 필터링하고 집중할 수 있습니다.
  • 타임스탬프 포함: 개발자는 사용자 지정 가능한 형식으로 로그 메시지에 타임스탬프를 포함하도록 선택할 수 있습니다. 이 기능은 이벤트의 정확한 시간을 추적하고 시간에 민감한 문제를 디버깅하는 데 매우 중요합니다.
  • 파일 로깅: 이 클래스는 파일 로깅에 대한 강력한 지원을 제공합니다. 개발자는 파일 로깅을 활성화 또는 비활성화하고, 로그 파일의 경로를 지정하고, 로그를 일반 폴더에 저장할지 여부를 선택할 수 있습니다. 또한 로그를 CSV 형식으로 저장할 수 있어 구문 분석 및 분석이 용이합니다.
  • 컨텍스트 정보: 로그 메시지의 명확성을 높이기 위해 CDebugLogger 클래스를 사용하면 함수 서명, 파일 이름 및 줄 번호를 포함할 수 있습니다. 이 컨텍스트 정보는 코드 내에서 문제의 정확한 위치를 파악하는 데 도움이 됩니다.
  • 자동 키워드: 이 클래스의 고유한 기능은 특정 키워드가 포함된 로그를 무음 처리하는 기능입니다. 이 기능은 비밀번호나 기밀 데이터와 같은 민감한 정보가 기록되는 것을 방지하는 데 특히 유용합니다.
  • 키워드 필터링: 클래스의 또 다른 고유한 기능은 특정 키워드가 포함된 로그를 필터링하는 기능입니다. 이 기능은 특정 문제와 관련된 로그에만 집중하여 디버깅할 특히 유용합니다. 개발자는 특정 용어가 포함된 메시지만 포함하도록 로그 출력 범위를 좁힐 수 있으므로 관련 없는 로그 항목에 압도되지 않고 해당 용어와 관련된 문제를 쉽게 식별하고 해결할 수 있습니다.

사용 예

다음은 CDebugLogger 클래스를 초기화하고 사용하는 방법의 예시입니다:

// 파일에 INFO 레벨 로깅으로 로거 초기화하기
CDebugLogger logger(INFO, true, "log.txt", true, TIME_DATE | TIME_MINUTES, false, true, true, true);

// 간단한 메시지 기록
logger.Log(INFO, "This is an info message");

// 키워드 뮤트하기
logger.AddSilentKeyword("password");

// 무음 처리할 메시지 기록
logger.Log(INFO, "User entered password: 1234");

// 파일 로깅 활성화
logger.EnableFileLogging(true, "debug.log", false);

// 음소거된 키워드 제거
logger.RemoveSilentKeyword("password");

// 뮤트 목록에서 키워드를 제거한 후 메시지 기록하기
logger.Log(INFO, "User entered password: 1234");

// 로그 필터링에 키워드 추가
logger.AddFilterKeyword("success");

// 필터링할 메시지를 기록합니다.
logger.Log(INFO, "Operation failed");

// 필터를 통과할 메시지를 기록합니다.
logger.Log(INFO, "Operation successful");

// 필터에서 키워드 제거
logger.RemoveFilterKeyword("success");

// 일반 Log 함수를 사용하여 초기화하기
logging.Initialize(WARNING, true, "warnings.log", true, TIME_SECONDS, true, false, true, true);

// 일반 Log 함수를 사용하여 경고 기록하기
Log(WARNING, "This is a warning message");

스크립트 예제

스크립트에서 CDebugLogger 클래스를 활용하려면 아래 그림과 같이 파일 시작 부분에 필요한 라이브러리를 포함하기만 하면 됩니다:

//--- 이 헤더 파일을 다른 모든 헤더 파일보다 먼저 포함시키는 것이 중요합니다.
#include <Logging.mqh>  


//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수|
//+------------------------------------------------------------------+
void OnStart()
{
   //--- INFO 레벨로 로거를 초기화하여 파일에 로깅합니다.
   //--- 타임스탬프 포함 및 CSV 형식으로 저장하기
   int log_options = 0; // 파일명 | 줄 | 함수;
   logging.Initialize(INFO, true, "example_log.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, log_options, true);

   //--- 간단한 정보 메시지 기록
   Log(INFO, "Script started successfully.");

   //--- 경고 메시지 기록
   Log(WARNING, "This is a warning message.");

   //--- 오류 메시지 기록
   Log(ERROR, "This is an error message.");

   //--- 디버그 메시지 로그
   Log(DEBUG, "This is a debug message for debugging purposes.");

   //--- 'password'가 포함된 무음 로그에 키워드 추가
   logging.AddSilentKeyword("password");

   //--- 음소거 키워드가 포함된 메시지를 기록하려고 시도합니다.
   Log(INFO, "User entered password: 12348"); // 이 메시지는 음소거됩니다.

   //--- 음소거 키워드 제거
   logging.RemoveSilentKeyword("password");

   //--- 메시지를 다시 기록하면 이제 기록됩니다.
   Log(INFO, "User entered password: 1234");

   //--- 일반 Log 함수를 사용하여 메시지를 기록합니다.
   Log(INFO, "This message is logged using the generic Log function.");

   //--- 인쇄 매크로를 사용하여 INFO 수준에서 메시지를 기록합니다.
   Print("This message is logged using the Print macro.");

   //--- 다양한 옵션 조합으로 로깅 데모 시연하기
   logging.Initialize(INFO, true, "log_with_options.txt", true, TIME_DATE | TIME_MINUTES, false, FILENAME | LINE, true);
   Log(INFO, "This log includes only the file name and line number.");

   logging.Initialize(INFO, true, "log_with_funcsig.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, FUNCSIG, true);
   Log(INFO, "This log includes only the function signature.");

   logging.Initialize(INFO, true, "log_custom_order.txt", true, TIME_MINUTES, false, LINE | FILENAME | FUNCSIG, true);
   Log(INFO, "This log includes line number, file name, and function signature in a custom order.");

   //--- '중요'가 포함된 로그를 필터링할 키워드를 추가합니다.
   logging.AddFilterKeyword("important");

   //--- 필터 데모를 위해 몇 가지 메시지를 기록합니다.
   Log(INFO, "This is an important message."); // 이 메시지가 표시됩니다.
   Log(INFO, "This is a regular message.");    // 이 메시지는 표시되지 않습니다.

   //--- 모든 로그를 표시하려면 필터 키워드를 제거합니다.
   logging.RemoveFilterKeyword("important");

   //--- 스크립트의 끝을 나타내는 마지막 메시지를 기록합니다.
   Log(INFO, "Script execution completed.");
}

출력 CSV 예제:

Timestamp,Level,Message
"2024.09.01 18:31:44","INFO","Script started successfully."
"2024.09.01 18:31:44","WARNING","This is a warning message."
"2024.09.01 18:31:44","ERROR","This is an error message."
"2024.09.01 18:31:44","DEBUG","This is a debug message for debugging purposes."
"2024.09.01 18:31:44","INFO","User entered password: 1234"
"2024.09.01 18:31:44","INFO","This message is logged using the generic Log function."
"2024.09.01 18:31:44","INFO","This message is logged using the Print macro."
Timestamp,Level,Message,Filename,Line
"2024.09.01 18:31","INFO","This log includes only the file name and line number.","Logging.mq5","135"
Timestamp,Level,Message,Funcsig
"2024.09.01 18:31:44","INFO","This log includes only the function signature.","void OnStart()"
Timestamp,Level,Message,Filename,Line,Funcsig
"18:31","INFO","This log includes line number, file name, and function signature in a custom order.","Logging.mq5","141","void OnStart()"
"18:31","INFO","This is an important message.","Logging.mq5","147","void OnStart()"
"18:31","INFO","Script execution completed.","Logging.mq5","154","void OnStart()"

결론

CDebugLogger 클래스는 모든 MQL4/5 개발자에게 매우 유용한 도구입니다. 다양한 사용자 정의 기능을 통해 애플리케이션을 정확하게 로깅하고 모니터링할 수 있어 디버깅을 더 쉽게 하고 애플리케이션 성능을 더 잘 추적할 수 있습니다. 간단한 메시지 로깅이 필요하든 자세한 컨텍스트 정보가 필요하든, CDebugLogger 클래스는 개발 요구 사항에 맞는 안정적이고 효율적인 솔루션을 제공합니다.

CDebugLogger 클래스에 대한 자세한 내용을 보거나 다른 고급 도구 및 솔루션을 살펴보려면 StormWave Technologies를 방문하세요.

MetaQuotes Ltd에서 영어로 번역함.
원본 코드: https://www.mql5.com/en/code/51817

Max trade volume checker for your trading account Max trade volume checker for your trading account

다양한 유형의 주문(매수, 매도, 지정가 매수, 지정가 매도)에 대해 기초 자산에 허용되는 최대 랏 크기를 표시하는 대화상자입니다.

IncAMAOnArray IncAMAOnArray

SAMAOnAgro 클래스는 인디케이터 버퍼에 의한 AMA(적응 이동 평균) 인디케이터 값을 계산하기 위한 것입니다.

X2MA 트랜스폼 캔들 X2MA 트랜스폼 캔들

인디케이터는 가격 데이터를 X2MA 인디케이터 값과 연결된 새 좌표계로 전송합니다.

XTrendlessOS(무추세 오실레이터) XTrendlessOS(무추세 오실레이터)

이 지표는 조 디나폴리의 저서 "디나폴리 레벨을 이용한 트레이딩"의 설명에 따라 작성되었습니다. 이 지표는 실제 과매수/과매도 시장을 평가하도록 설계되었습니다.