615 lines
29 KiB
MQL5
615 lines
29 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| LogifyBuilder.mqh |
|
|
//| joaopedrodev |
|
|
//| https://www.mql5.com/en/users/joaopedrodev |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "joaopedrodev"
|
|
#property link "https://www.mql5.com/en/users/joaopedrodev"
|
|
//+------------------------------------------------------------------+
|
|
//| Import |
|
|
//+------------------------------------------------------------------+
|
|
#include "Logify.mqh"
|
|
|
|
//--- Creates an empty class to compile without errors
|
|
class CLogifyBuilder;
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| class : CLogifyHandlerCommentBuilder |
|
|
//| |
|
|
//| [PROPERTY] |
|
|
//| Name : LogifyHandlerCommentBuilder |
|
|
//| Heritage : No heritage |
|
|
//| Description : Comment handler constructor. |
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class CLogifyHandlerCommentBuilder
|
|
{
|
|
private:
|
|
|
|
MqlLogifyHandleCommentConfig m_config;
|
|
|
|
CLogifyBuilder *m_parent;
|
|
CLogifyFormatter *m_formatter;
|
|
CLogifyHandlerComment *m_handler;
|
|
|
|
public:
|
|
CLogifyHandlerCommentBuilder(CLogifyBuilder *logify);
|
|
~CLogifyHandlerCommentBuilder(void);
|
|
|
|
CLogifyHandlerCommentBuilder *SetLevel(ENUM_LOG_LEVEL level);
|
|
CLogifyHandlerCommentBuilder *SetFormatter(string format);
|
|
CLogifyHandlerCommentBuilder *SetFormatter(ENUM_LOG_LEVEL level, string format);
|
|
CLogifyBuilder *Done(void);
|
|
//---
|
|
CLogifyHandlerCommentBuilder *SetSize(int size);
|
|
CLogifyHandlerCommentBuilder *SetFrameStyle(ENUM_LOG_FRAME_STYLE frame_style);
|
|
CLogifyHandlerCommentBuilder *SetDirection(ENUM_LOG_DIRECTION direction);
|
|
CLogifyHandlerCommentBuilder *SetTitle(string title);
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| Constructor |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerCommentBuilder::CLogifyHandlerCommentBuilder(CLogifyBuilder *logify)
|
|
{
|
|
m_parent = logify;
|
|
m_formatter = new CLogifyFormatter();
|
|
m_handler = new CLogifyHandlerComment();
|
|
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Destructor |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerCommentBuilder::~CLogifyHandlerCommentBuilder(void)
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the log level for the handler. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerCommentBuilder *CLogifyHandlerCommentBuilder::SetLevel(ENUM_LOG_LEVEL level)
|
|
{
|
|
m_handler.SetLevel(level);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the default format string for the formatter. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerCommentBuilder *CLogifyHandlerCommentBuilder::SetFormatter(string format)
|
|
{
|
|
m_formatter.SetFormat(format);
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets a log-level-specific format for the formatter. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerCommentBuilder *CLogifyHandlerCommentBuilder::SetFormatter(ENUM_LOG_LEVEL level, string format)
|
|
{
|
|
m_formatter.SetFormat(level,format);
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Finalizes the handler configuration. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyBuilder *CLogifyHandlerCommentBuilder::Done(void)
|
|
{
|
|
delete GetPointer(this);
|
|
m_parent.AddHandler(GetPointer(m_handler));
|
|
return(m_parent);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the size configuration of the comment handler. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerCommentBuilder *CLogifyHandlerCommentBuilder::SetSize(int size)
|
|
{
|
|
m_config.size = size;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the frame style of the comment box. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerCommentBuilder *CLogifyHandlerCommentBuilder::SetFrameStyle(ENUM_LOG_FRAME_STYLE frame_style)
|
|
{
|
|
m_config.frame_style = frame_style;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the direction (UP or DOWN). |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerCommentBuilder *CLogifyHandlerCommentBuilder::SetDirection(ENUM_LOG_DIRECTION direction)
|
|
{
|
|
m_config.direction = direction;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the title of the comment box. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerCommentBuilder *CLogifyHandlerCommentBuilder::SetTitle(string title)
|
|
{
|
|
m_config.title = title;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| class : CLogifyHandlerConsoleBuilder |
|
|
//| |
|
|
//| [PROPERTY] |
|
|
//| Name : LogifyHandlerConsoleBuilder |
|
|
//| Heritage : No heritage |
|
|
//| Description : Console handler constructor. |
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class CLogifyHandlerConsoleBuilder
|
|
{
|
|
private:
|
|
|
|
CLogifyBuilder *m_parent;
|
|
CLogifyFormatter *m_formatter;
|
|
CLogifyHandlerConsole *m_handler;
|
|
|
|
public:
|
|
CLogifyHandlerConsoleBuilder(CLogifyBuilder *logify);
|
|
~CLogifyHandlerConsoleBuilder(void);
|
|
|
|
CLogifyHandlerConsoleBuilder *SetLevel(ENUM_LOG_LEVEL level);
|
|
CLogifyHandlerConsoleBuilder *SetFormatter(string format);
|
|
CLogifyHandlerConsoleBuilder *SetFormatter(ENUM_LOG_LEVEL level, string format);
|
|
CLogifyBuilder *Done(void);
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| Constructor |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerConsoleBuilder::CLogifyHandlerConsoleBuilder(CLogifyBuilder *logify)
|
|
{
|
|
m_parent = logify;
|
|
m_formatter = new CLogifyFormatter();
|
|
m_handler = new CLogifyHandlerConsole();
|
|
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| Destructor |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerConsoleBuilder::~CLogifyHandlerConsoleBuilder(void)
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the log level for the handler. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerConsoleBuilder *CLogifyHandlerConsoleBuilder::SetLevel(ENUM_LOG_LEVEL level)
|
|
{
|
|
m_handler.SetLevel(level);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the default format string for the formatter. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerConsoleBuilder *CLogifyHandlerConsoleBuilder::SetFormatter(string format)
|
|
{
|
|
m_formatter.SetFormat(format);
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets a log-level-specific format for the formatter. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerConsoleBuilder *CLogifyHandlerConsoleBuilder::SetFormatter(ENUM_LOG_LEVEL level, string format)
|
|
{
|
|
m_formatter.SetFormat(level,format);
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Finalizes the handler configuration. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyBuilder *CLogifyHandlerConsoleBuilder::Done(void)
|
|
{
|
|
m_parent.AddHandler(GetPointer(m_handler));
|
|
delete GetPointer(this);
|
|
return(m_parent);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| class : CLogifyHandlerDatabaseBuilder |
|
|
//| |
|
|
//| [PROPERTY] |
|
|
//| Name : LogifyHandlerDatabaseBuilder |
|
|
//| Heritage : No heritage |
|
|
//| Description : Database handler constructor. |
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class CLogifyHandlerDatabaseBuilder
|
|
{
|
|
private:
|
|
|
|
MqlLogifyHandleDatabaseConfig m_config;
|
|
|
|
CLogifyBuilder *m_parent;
|
|
CLogifyFormatter *m_formatter;
|
|
CLogifyHandlerDatabase *m_handler;
|
|
|
|
public:
|
|
CLogifyHandlerDatabaseBuilder(CLogifyBuilder *logify);
|
|
~CLogifyHandlerDatabaseBuilder(void);
|
|
|
|
CLogifyHandlerDatabaseBuilder *SetLevel(ENUM_LOG_LEVEL level);
|
|
CLogifyHandlerDatabaseBuilder *SetFormatter(string format);
|
|
CLogifyHandlerDatabaseBuilder *SetFormatter(ENUM_LOG_LEVEL level, string format);
|
|
CLogifyBuilder *Done(void);
|
|
//---
|
|
CLogifyHandlerDatabaseBuilder *SetDirectory(string directory);
|
|
CLogifyHandlerDatabaseBuilder *SetBaseFileName(string base_filename);
|
|
CLogifyHandlerDatabaseBuilder *SetMessagesPerFlush(int messages_per_flush);
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| Constructor |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerDatabaseBuilder::CLogifyHandlerDatabaseBuilder(CLogifyBuilder *logify)
|
|
{
|
|
m_parent = logify;
|
|
m_formatter = new CLogifyFormatter();
|
|
m_handler = new CLogifyHandlerDatabase();
|
|
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Destructor |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerDatabaseBuilder::~CLogifyHandlerDatabaseBuilder(void)
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the log level for the handler. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerDatabaseBuilder *CLogifyHandlerDatabaseBuilder::SetLevel(ENUM_LOG_LEVEL level)
|
|
{
|
|
m_handler.SetLevel(level);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the default format string for the formatter. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerDatabaseBuilder *CLogifyHandlerDatabaseBuilder::SetFormatter(string format)
|
|
{
|
|
m_formatter.SetFormat(format);
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets a log-level-specific format for the formatter. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerDatabaseBuilder *CLogifyHandlerDatabaseBuilder::SetFormatter(ENUM_LOG_LEVEL level, string format)
|
|
{
|
|
m_formatter.SetFormat(level,format);
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Finalizes the handler configuration. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyBuilder *CLogifyHandlerDatabaseBuilder::Done(void)
|
|
{
|
|
m_parent.AddHandler(GetPointer(m_handler));
|
|
delete GetPointer(this);
|
|
return(m_parent);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the directory where the database files will be stored. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerDatabaseBuilder *CLogifyHandlerDatabaseBuilder::SetDirectory(string directory)
|
|
{
|
|
m_config.directory = directory;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the base file name for the database file. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerDatabaseBuilder *CLogifyHandlerDatabaseBuilder::SetBaseFileName(string base_filename)
|
|
{
|
|
m_config.base_filename = base_filename;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets how many messages should be logged before flushing to disk. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerDatabaseBuilder *CLogifyHandlerDatabaseBuilder::SetMessagesPerFlush(int messages_per_flush)
|
|
{
|
|
m_config.messages_per_flush = messages_per_flush;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| class : CLogifyHandlerFileBuilder |
|
|
//| |
|
|
//| [PROPERTY] |
|
|
//| Name : LogifyHandlerFileBuilder |
|
|
//| Heritage : No heritage |
|
|
//| Description : File handler constructor. |
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class CLogifyHandlerFileBuilder
|
|
{
|
|
private:
|
|
|
|
MqlLogifyHandleFileConfig m_config;
|
|
|
|
CLogifyBuilder *m_parent;
|
|
CLogifyFormatter *m_formatter;
|
|
CLogifyHandlerFile *m_handler;
|
|
|
|
public:
|
|
CLogifyHandlerFileBuilder(CLogifyBuilder *logify);
|
|
~CLogifyHandlerFileBuilder(void);
|
|
|
|
CLogifyHandlerFileBuilder *SetLevel(ENUM_LOG_LEVEL level);
|
|
CLogifyHandlerFileBuilder *SetFormatter(string format);
|
|
CLogifyHandlerFileBuilder *SetFormatter(ENUM_LOG_LEVEL level, string format);
|
|
CLogifyBuilder *Done(void);
|
|
|
|
//---
|
|
CLogifyHandlerFileBuilder *SetDirectory(string directory);
|
|
CLogifyHandlerFileBuilder *SetFilename(string base_filename);
|
|
CLogifyHandlerFileBuilder *SetFileExtension(ENUM_LOG_FILE_EXTENSION file_extension);
|
|
CLogifyHandlerFileBuilder *SetRotationMode(ENUM_LOG_ROTATION_MODE rotation_mode);
|
|
CLogifyHandlerFileBuilder *SetMessagesPerFlush(int messages_per_flush);
|
|
CLogifyHandlerFileBuilder *SetCodepage(uint codepage);
|
|
CLogifyHandlerFileBuilder *SetFileSizeMB(ulong max_file_size_mb);
|
|
CLogifyHandlerFileBuilder *SetMaxFileCount(int max_file_count);
|
|
|
|
//---
|
|
CLogifyHandlerFileBuilder *ConfigNoRotation(string base_name="expert", string dir="logs", ENUM_LOG_FILE_EXTENSION extension=LOG_FILE_EXTENSION_LOG, int msg_per_flush=100, uint cp=CP_UTF8);
|
|
CLogifyHandlerFileBuilder *ConfigDateRotation(string base_name="expert", string dir="logs", ENUM_LOG_FILE_EXTENSION extension=LOG_FILE_EXTENSION_LOG, int max_files=10, int msg_per_flush=100, uint cp=CP_UTF8);
|
|
CLogifyHandlerFileBuilder *ConfigSizeRotation(string base_name="expert", string dir="logs", ENUM_LOG_FILE_EXTENSION extension=LOG_FILE_EXTENSION_LOG, ulong max_size=5, int max_files=10, int msg_per_flush=100, uint cp=CP_UTF8);
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| Constructor |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder::CLogifyHandlerFileBuilder(CLogifyBuilder *logify)
|
|
{
|
|
m_parent = logify;
|
|
m_formatter = new CLogifyFormatter();
|
|
m_handler = new CLogifyHandlerFile();
|
|
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Destructor |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder::~CLogifyHandlerFileBuilder(void)
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the log level for the handler. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::SetLevel(ENUM_LOG_LEVEL level)
|
|
{
|
|
m_handler.SetLevel(level);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the default format string for the formatter. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::SetFormatter(string format)
|
|
{
|
|
m_formatter.SetFormat(format);
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets a log-level-specific format for the formatter. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::SetFormatter(ENUM_LOG_LEVEL level, string format)
|
|
{
|
|
m_formatter.SetFormat(level,format);
|
|
m_handler.SetFormatter(GetPointer(m_formatter));
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Finalizes the handler configuration. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyBuilder *CLogifyHandlerFileBuilder::Done(void)
|
|
{
|
|
m_parent.AddHandler(GetPointer(m_handler));
|
|
delete GetPointer(this);
|
|
return(m_parent);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the directory path where log files will be saved. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::SetDirectory(string directory)
|
|
{
|
|
m_config.directory = directory;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the base filename used for log files. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::SetFilename(string base_filename)
|
|
{
|
|
m_config.base_filename = base_filename;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the file extension used for log files. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::SetFileExtension(ENUM_LOG_FILE_EXTENSION file_extension)
|
|
{
|
|
m_config.file_extension = file_extension;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the rotation mode (none, by size, by date, etc). |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::SetRotationMode(ENUM_LOG_ROTATION_MODE rotation_mode)
|
|
{
|
|
m_config.rotation_mode = rotation_mode;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets how many log messages should be written before flushing. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::SetMessagesPerFlush(int messages_per_flush)
|
|
{
|
|
m_config.messages_per_flush = messages_per_flush;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the character encoding (codepage) used for the log file. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::SetCodepage(uint codepage)
|
|
{
|
|
m_config.codepage = codepage;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the maximum size (in MB) before rotating the log file. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::SetFileSizeMB(ulong max_file_size_mb)
|
|
{
|
|
m_config.max_file_size_mb = max_file_size_mb;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the maximum number of log files to keep (for rotation). |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::SetMaxFileCount(int max_file_count)
|
|
{
|
|
m_config.max_file_count = max_file_count;
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Configures a file handler with no file rotation |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::ConfigNoRotation(string base_name="expert", string dir="logs", ENUM_LOG_FILE_EXTENSION extension=LOG_FILE_EXTENSION_LOG, int msg_per_flush=100, uint cp=CP_UTF8)
|
|
{
|
|
m_config.CreateNoRotationConfig(base_name,dir,extension,msg_per_flush,cp);
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Configures a file handler to rotate logs based on the date. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::ConfigDateRotation(string base_name="expert", string dir="logs", ENUM_LOG_FILE_EXTENSION extension=LOG_FILE_EXTENSION_LOG, int max_files=10, int msg_per_flush=100, uint cp=CP_UTF8)
|
|
{
|
|
m_config.CreateDateRotationConfig(base_name,dir,extension,max_files,msg_per_flush,cp);
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Configures a file handler to rotate logs when size is exceeded. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyHandlerFileBuilder::ConfigSizeRotation(string base_name="expert", string dir="logs", ENUM_LOG_FILE_EXTENSION extension=LOG_FILE_EXTENSION_LOG, ulong max_size=5, int max_files=10, int msg_per_flush=100, uint cp=CP_UTF8)
|
|
{
|
|
m_config.CreateSizeRotationConfig(base_name,dir,extension,max_size,max_files,msg_per_flush,cp);
|
|
m_handler.SetConfig(m_config);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| class : CLogifyBuilder |
|
|
//| |
|
|
//| [PROPERTY] |
|
|
//| Name : LogifyBuilder |
|
|
//| Heritage : No heritage |
|
|
//| Description : Build CLogify objects, following the Builder design|
|
|
//| pattern. |
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class CLogifyBuilder
|
|
{
|
|
private:
|
|
|
|
CLogify *m_logify;
|
|
|
|
public:
|
|
CLogifyBuilder(void);
|
|
~CLogifyBuilder(void);
|
|
|
|
CLogifyBuilder *UseLanguage(ENUM_LOG_LANGUAGE language);
|
|
|
|
//--- Starts configuration handlers
|
|
CLogifyHandlerCommentBuilder *AddHandlerComment(void);
|
|
CLogifyHandlerConsoleBuilder *AddHandlerConsole(void);
|
|
CLogifyHandlerDatabaseBuilder *AddHandlerDatabase(void);
|
|
CLogifyHandlerFileBuilder *AddHandlerFile(void);
|
|
|
|
void AddHandler(CLogifyHandler *handler);
|
|
CLogify *Build(void);
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| Constructor |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyBuilder::CLogifyBuilder(void)
|
|
{
|
|
m_logify = new CLogify();
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Destructor |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyBuilder::~CLogifyBuilder(void)
|
|
{
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Sets the language for the log |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyBuilder *CLogifyBuilder::UseLanguage(ENUM_LOG_LANGUAGE language)
|
|
{
|
|
m_logify.SetLanguage(language);
|
|
return(GetPointer(this));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Starts configuration for a comment-based log handler. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerCommentBuilder *CLogifyBuilder::AddHandlerComment(void)
|
|
{
|
|
return(new CLogifyHandlerCommentBuilder(GetPointer(this)));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Starts configuration for a console-based log handler. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerConsoleBuilder *CLogifyBuilder::AddHandlerConsole(void)
|
|
{
|
|
return(new CLogifyHandlerConsoleBuilder(GetPointer(this)));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Starts configuration for a database-based log handler. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerDatabaseBuilder *CLogifyBuilder::AddHandlerDatabase(void)
|
|
{
|
|
return(new CLogifyHandlerDatabaseBuilder(GetPointer(this)));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Starts configuration for a file-based log handler. |
|
|
//+------------------------------------------------------------------+
|
|
CLogifyHandlerFileBuilder *CLogifyBuilder::AddHandlerFile(void)
|
|
{
|
|
return(new CLogifyHandlerFileBuilder(GetPointer(this)));
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Adds a fully configured log handler to the current Logify object.|
|
|
//+------------------------------------------------------------------+
|
|
void CLogifyBuilder::AddHandler(CLogifyHandler *handler)
|
|
{
|
|
m_logify.AddHandler(handler);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Finalizes the build process and returns the configured Logify. |
|
|
//+------------------------------------------------------------------+
|
|
CLogify *CLogifyBuilder::Build(void)
|
|
{
|
|
delete GetPointer(this);
|
|
return(GetPointer(m_logify));
|
|
}
|
|
//+------------------------------------------------------------------+
|