당사 팬 페이지에 가입하십시오
- 조회수:
- 46
- 평가:
- 게시됨:
-
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
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
다양한 유형의 주문(매수, 매도, 지정가 매수, 지정가 매도)에 대해 기초 자산에 허용되는 최대 랏 크기를 표시하는 대화상자입니다.
IncAMAOnArray
SAMAOnAgro 클래스는 인디케이터 버퍼에 의한 AMA(적응 이동 평균) 인디케이터 값을 계산하기 위한 것입니다.
X2MA 트랜스폼 캔들
인디케이터는 가격 데이터를 X2MA 인디케이터 값과 연결된 새 좌표계로 전송합니다.
XTrendlessOS(무추세 오실레이터)
이 지표는 조 디나폴리의 저서 "디나폴리 레벨을 이용한 트레이딩"의 설명에 따라 작성되었습니다. 이 지표는 실제 과매수/과매도 시장을 평가하도록 설계되었습니다.