#include "FileZilla.h"
#include "logging_private.h"
CLogging::CLogging(CFileZillaEnginePrivate *pEngine)
{
m_pEngine = pEngine;
}
void CLogging::LogMessage(MessageType nMessageType, const wxChar *msgFormat, ...) const
{
const int debugLevel = m_pEngine->GetOptions()->GetOptionVal(OPTION_LOGGING_DEBUGLEVEL);
switch (nMessageType)
{
case Debug_Warning:
if (!debugLevel)
return;
break;
case Debug_Info:
if (debugLevel < 2)
return;
break;
case Debug_Verbose:
if (debugLevel < 3)
return;
break;
case Debug_Debug:
if (debugLevel != 4)
return;
break;
case RawList:
if (!m_pEngine->GetOptions()->GetOptionVal(OPTION_LOGGING_RAWLISTING))
return;
break;
default:
break;
}
va_list ap;
va_start(ap, msgFormat);
wxString text = wxString::FormatV(msgFormat, ap);
va_end(ap);
CLogmsgNotification *notification = new CLogmsgNotification;
notification->msgType = nMessageType;
notification->msg = text;
m_pEngine->AddNotification(notification);
}
void CLogging::LogMessageRaw(MessageType nMessageType, const wxChar *msg) const
{
const int debugLevel = m_pEngine->GetOptions()->GetOptionVal(OPTION_LOGGING_DEBUGLEVEL);
switch (nMessageType)
{
case Debug_Warning:
if (!debugLevel)
return;
break;
case Debug_Info:
if (debugLevel < 2)
return;
break;
case Debug_Verbose:
if (debugLevel < 3)
return;
break;
case Debug_Debug:
if (debugLevel != 4)
return;
break;
case RawList:
if (!m_pEngine->GetOptions()->GetOptionVal(OPTION_LOGGING_RAWLISTING))
return;
break;
default:
break;
}
CLogmsgNotification *notification = new CLogmsgNotification;
notification->msgType = nMessageType;
notification->msg = msg;
m_pEngine->AddNotification(notification);
}
void CLogging::LogMessage(wxString SourceFile, int nSourceLine, void *pInstance, MessageType nMessageType, const wxChar *msgFormat, ...) const
{
const int debugLevel = m_pEngine->GetOptions()->GetOptionVal(OPTION_LOGGING_DEBUGLEVEL);
switch (nMessageType)
{
case Debug_Warning:
if (!debugLevel)
return;
break;
case Debug_Info:
if (debugLevel < 2)
return;
break;
case Debug_Verbose:
if (debugLevel < 3)
return;
break;
case Debug_Debug:
if (debugLevel != 4)
return;
break;
default:
break;
}
int pos = SourceFile.Find('\\', true);
if (pos != -1)
SourceFile = SourceFile.Mid(pos+1);
pos = SourceFile.Find('/', true);
if (pos != -1)
SourceFile = SourceFile.Mid(pos+1);
va_list ap;
va_start(ap, msgFormat);
wxString text = wxString::FormatV(msgFormat, ap);
va_end(ap);
wxString msg = wxString::Format(_T("%s(%d): %s caller=%p"), SourceFile.c_str(), nSourceLine, text.c_str(), this);
CLogmsgNotification *notification = new CLogmsgNotification;
notification->msgType = nMessageType;
notification->msg = msg;
m_pEngine->AddNotification(notification);
}
syntax highlighted by Code2HTML, v. 0.9.1