- Way 1.
public static str getError()
{
SysInfologEnumerator sysInfologEnumerator;
SysInfologMessageStruct infoMessageStruct;
str logMessage;
str logString;
str ret;
int i;
#Define.NewLine('\n')
sysInfologEnumerator = SysInfologEnumerator::newData(infolog.infologData());
while (sysInfologEnumerator.moveNext())
{
i = 1;
if (logMessage)
{
logMessage += #Newline;
}
infoMessageStruct = SysInfologMessageStruct::construct(sysInfologEnumerator.currentMessage());
while (i <= infoMessageStruct.prefixDepth())
{
logString = logString + infoMessageStruct.preFixTextElement(i) + '. ';
i++;
}
logString = logString + infoMessageStruct.message();
logMessage = logMessage + infoMessageStruct.message();
}
return logMessage;
}- Way 2
public void method()
{
System.Exception ex;
try
{
}
catch
{
ex = CLRInterop::getLastException().GetBaseException();
error(ex.get_Message());
--- or----
System.Exception e = ex;
while (e != null)
{
errorMessage += e.Message;
e = e.InnerException;
}
}
}- Way 3 (It fill fetch only messages from our process)
public static void main(Args _args)
{
Counter infoLogStartPos;
try
{
infoLogStartPos = infologLine();
// Your code
}
catch
{
Counter infoLogEndPos = infologLine();
str logText = Info::infoCon2Str(infolog.copy(infoLogStartPos, infoLogEndPos));
warning(logText);// You can save this log text into your table.
infoLogStartPos = infoLogEndPos + 1;
}
}- Way 4 (Get the type of exception using the below code.)
container infologContents = infolog.cut();
for (int i = 1; i <= conLen(infologContents); i++)
{
container infologLine = conPeek(infologContents, i);
Exception errorLevel = conPeek(infologLine, 1);
str logMessage = conPeek(infologLine, 2);
if (logMessage)
{
switch (errorLevel)
{
case Exception::Error :
errors.add(logMessage);
break;
case Exception::Warning :
warnings.add(logMessage);
break;
case Exception::Info :
infos.add(logMessage);
break;
default:
Debug::assert(false);
warnings.add(logMessage);
break;
}
}
}- Way 5
SysInfologEnumerator enumerator;
SysInfologMessageStruct msgStruct;
Exception exception;
str error;
enumerator = SysInfologEnumerator::newData(infolog.cut());
while (enumerator.moveNext())
{
msgStruct = new SysInfologMessageStruct(enumerator.currentMessage());
exception = enumerator.currentException();
error = strfmt("%1 %2", error, msgStruct.message()) + "\n";
}- Way 6 (Return only error messages from info log)
SysInfologEnumerator sysInfologEnumerator = SysInfologEnumerator::newData(infolog.infologData()); while (sysInfologEnumerator.moveNext())
{
switch (sysInfologEnumerator.currentException())
{
case Exception::Error:
retvalue = strFmt("%1", sysInfologEnumerator.currentMessage());
break;
}
}
- Way 7
infolog.text(infologLine());
- Way 8
str errormessage;
errormessage = infolog.text(infologLine());
errormessage = infolog.text(infologLine()-1);
errormessage = errormessage + " "+ infolog.text(infologLine());
Error(errormessage);Reference
