Показать сообщение отдельно
Старый 14.08.2009, 14:21   #2  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от SergeySS Посмотреть сообщение
Подскажите как можно определить источник вызова метода.
Не касаясь остального, я пользую метод (тут кстати подсказали)
Положил его в Global и отлично. Можно переопределить, чтобы в БД писал.
X++:
static server boolean stackTrace2File(anytype _string, str _mode = 'A',Filename _file = "")
{
    Filename         fileName = xInfo::directory(DirectoryType::Config) + '..\\..\\log\\' + curuserid() + '-info2File.txt';
    str              toFile   = strFmt("%1 [%2] '%3'", systemdateget(), time2str(timenow(), 1, 1), _string) + '\n';
//    FileIOPermission perm     = new FileIOPermission(fileName, _mode);
    container        stack    = xSession::xppCallStack();
    AsciiIo          file;
    str stackTraceStr(container stackTrace)
    {
        int i;
        str s = "";
        ;
        for(i = 1; i <= conLen(stackTrace); i += 2)
            s+=strFmt("%1:%2\r\n", conPeek(stackTrace, i), conPeek(stackTrace, i+1));
        return s;
    }
    ;
//    perm.assert();
    file = new AsciiIO(fileName, 'A');
    if (file.status() == IO_Status::Ok)
    {
        file.write(toFile+'\r\n' + stackTraceStr(stack));
        return true;
    }
    return false;
}