В продолжении темы.
Согласен info тоже удобен. Но в нем очень неудобно осуществлять навигацию, если записей очень много получается. Трудно даже ползунок сдвинуть.
Подскажите еще.
Вопрос 1
Пакетник ведет лог в файл, все хорошо. Но при работе есть случаи когда происходит вывод сообщений в инфолог из глубины различных методов.
Соответственно на финише получается такая картина, лог выводится в файл и выводится инфолог в котором масса сообщения тоже.
Невозможно понять в рамках какой строки лога выводились конкретное сообщения в инфоологе.
Мне было бы удобнее к каждой строке лога текстового файла добавлять текстовое значение из инфолога которое были выведены. Только вопрос: Как сообщение извлечь из инфолога в текстовую переменную? И главное что бы это сообщение из инфолога было без эффекта накопления..
Вопрос 2
Я использую класс для вывода сообщений System.IO.StreamWriter (код из примера):
X++:
static void Job_StreamWriter(Args _args)
{
System.IO.StreamWriter sw;
InteropPermission perm = new InteropPermission(InteropKind::ClrInterop);
;
perm.assert();
sw = new System.IO.StreamWriter(@"C:\test.txt");
sw.WriteLine("Line 1");
sw.WriteLine("Line 2");
sw.Flush();
sw.Close();
sw.Dispose();
CodeAccessPermission::revertAssert();
}
Пытался указать:
X++:
sw = new System.IO.StreamWriter(@"%USERPROFILE%\test.log");
Но система выводит ошибку "Объект "CLRObject" не может быть создан".
Похоже она не понимает переменные окружения.
Нужно для того что если пакетник выполняется вручную на сервере соответственно сохранить возможно лог только в папку текущего пользователя запустившего пакетник.
Вопрос 3
Возможно ли как то узнать какая ошибка генерируется в случае когда выводится ошибка "Объект "CLRObject" не может быть создан".
Это нужно для того что бы обрабатывать различные ошибки. Как в вопросе выше.
Если нет доступа к пути то нужно выводить такое сообщение.
Создавал вот такую конструкцию:
X++:
try
{
sw = new System.IO.StreamWriter(@"%USERPROFILE%\test.log");
if (!sw)
{
throw error('ошибка');
}
}
//catch(Exception::CLRError)
catch(Exception::Error)
{
info("свой текст ошибки");
}
Но ни в каком случае свой текст ошибки не выводится. Выводится только "Объект "CLRObject" не может быть создан".