Инфолог в Visual Studio - PullRequest
       60

Инфолог в Visual Studio

0 голосов
/ 16 января 2020

Я работаю над Dynamics AX 2012 r3 и отлаживаю пакетное задание с помощью Visual Studio 2013. В отладчике Dynamics AX я вижу сообщения infolog на панели infolog.

Существует ли аналогичная панель или способ просмотра сообщений infolog при отладке в Visual Studio?

1 Ответ

0 голосов
/ 17 января 2020

Для каких целей? Я могу ошибаться, но я думаю нет без настройки.

Вы можете просто добавить код в \Classes\Info\add, чтобы сделать все, что вы хотите, в качестве обходного пути. Если вы подключаете VS к AX, тогда System.Console::WriteLine("This might appear in the VS Output window"); может работать. См. Фрагмент кода в конце этого поста.

Здесь есть несколько хороших вариантов для изучения: http://dev.goshoom.net/en/2012/05/console-output-ax/

Вы можете просто открыть оба отладчика, и когда infolog входит, он может появиться в отладчике AX.

Добавьте приведенное ниже в класс Info и затем вызовите его в методе add(), и вы сможете просмотрите вьювер событий на предмет инфологов, если вам просто нужно посмотреть, что выводится. Это был мой обходной путь для отладки пакетных заданий или вещей в CIL, которые было трудно отследить.

static server void writeToSystemEventLog(str _message, Exception _exception = Exception::Info, int _eventId = 0)
{
    #define.logSource('Dynamics Ax')
    #define.logName('Dynamics Ax Log')
    System.Diagnostics.EventLog             eventLog;
    System.Diagnostics.EventLogEntryType    entryType;

    switch (_exception)
    {
        case Exception::Error:
            entryType = System.Diagnostics.EventLogEntryType::Error;
            break;

        case Exception::Warning:
            entryType = System.Diagnostics.EventLogEntryType::Warning;
            break;

        default:
            entryType = System.Diagnostics.EventLogEntryType::Information;
            break;
    }

    if (!System.Diagnostics.EventLog::SourceExists(#logSource))
    {
        System.Diagnostics.EventLog::CreateEventSource(#logSource, #logName);
    }

    eventlog = new System.Diagnostics.EventLog();
    eventLog.set_Source(#logSource);
    eventlog.WriteEntry(_message, entryType, _eventId);
}

Вызов:

static void Job99(Args _args)
{
    info::writeToSystemEventLog("Alex Test", Exception::Info, 1);
}

Затем в программе просмотра событий:

enter image description here

...