90 lignes
2,7 Kio
MQL5
90 lignes
2,7 Kio
MQL5
//+------------------------------------------------------------------+
|
|
//| LogMiddleware.mqh - Logging Middleware Stub |
|
|
//| Provides backward compatible logging functionality |
|
|
//+------------------------------------------------------------------+
|
|
#ifndef LOGMIDDLEWARE_MQH
|
|
#define LOGMIDDLEWARE_MQH
|
|
|
|
// MQL5 native includes only - no C++ stdlib
|
|
#include <Files\File.mqh>
|
|
|
|
// Simple LOG macro - just prints to console
|
|
#define LOG(msg) Print(msg)
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Simple Log Middleware Class |
|
|
//+------------------------------------------------------------------+
|
|
class CLogMiddleware
|
|
{
|
|
private:
|
|
string m_logFile;
|
|
bool m_enabled;
|
|
bool m_useDebugPrint;
|
|
bool m_is_tester;
|
|
|
|
public:
|
|
// Constructor
|
|
CLogMiddleware(string logFile = "", bool enabled = true)
|
|
{
|
|
m_logFile = logFile;
|
|
m_enabled = enabled;
|
|
m_useDebugPrint = true;
|
|
m_is_tester = (MQLInfoInteger(MQL_TESTER) != 0);
|
|
|
|
// In tester mode, disable file logging to prevent crashes
|
|
if(m_is_tester)
|
|
{
|
|
m_logFile = ""; // Disable file logging in tester
|
|
Print("[LogMiddleware] TESTER MODE: File logging disabled");
|
|
}
|
|
}
|
|
|
|
// Destructor
|
|
~CLogMiddleware() {}
|
|
|
|
// Log a message
|
|
void Log(string message)
|
|
{
|
|
if (!m_enabled) return;
|
|
|
|
string timestamp = TimeToString(TimeCurrent(), TIME_DATE | TIME_SECONDS);
|
|
string logLine = "[" + timestamp + "] " + message;
|
|
|
|
// Print to Experts log
|
|
Print(logLine);
|
|
|
|
// Write to file if specified (disabled in tester mode)
|
|
if (!m_is_tester && StringLen(m_logFile) > 0)
|
|
{
|
|
// Ensure directory exists before writing
|
|
string folder = "";
|
|
int sepPos = StringFind(m_logFile, "\\");
|
|
if(sepPos > 0)
|
|
{
|
|
folder = StringSubstr(m_logFile, 0, sepPos);
|
|
FolderCreate(folder, FILE_COMMON);
|
|
}
|
|
|
|
int handle = FileOpen(m_logFile, FILE_WRITE | FILE_TXT | FILE_COMMON);
|
|
if (handle != INVALID_HANDLE)
|
|
{
|
|
FileSeek(handle, 0, SEEK_END);
|
|
FileWriteString(handle, logLine + "\r\n");
|
|
FileClose(handle);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Set enabled state
|
|
void SetEnabled(bool enabled) { m_enabled = enabled; }
|
|
bool IsEnabled() const { return m_enabled; }
|
|
|
|
// Set log file
|
|
void SetLogFile(string logFile) { m_logFile = logFile; }
|
|
string GetLogFile() const { return m_logFile; }
|
|
};
|
|
|
|
// Global singleton for backward compatibility
|
|
CLogMiddleware* LogMiddleware = NULL;
|
|
|
|
#endif // LOGMIDDLEWARE_MQH
|