|
![]() |
#1 |
Участник
|
Цитата:
Сделал простенькую модификацию класcа info. В пакетном режиме он пишет в специальную табличку лога все сообщения выводимые в инфолог, тип исключения, стек вызовов, SessionId, AOSid. Запись идет через отдельное соединение к базе. Т.е. независимо от успешности завершения пакетного задания, а также независимо от наличия в нем транзакций, сторонний наблюдатель сразу видит, что пишется в инфолог и понимает что происходит с процессом прямо сейчас. Эта табличка выведена на отдельную закладку в форме Batch, в которой в гриде выведены сообщения привязанные к конкретному заданию. Грид раскрашен в соответствие с типом сообщения. Табличка лога партицирована по дате времени создания и специальный пакетник режет старые партиции (оставляем последние 2 недели для разбора полетов) По-моему очень удобно. Еще хотел туда же подключить выхлоп SysoperationProgress, так как не все пакеты активно пишут в инфолог, но на длительных операциях практически все показывают прогресс бар. но руки пока не дошли. Используем этот инструмент для разбора полетов постфактум а также для выяснения, а чего это делает пакетник, который по всем признакам подвис. Подход с табличкой логом удобен тем что позволяет сотруднику тех поддержки ответственному за пакеты контролировать процесс привычными методами. Быстро искать и анализировать проблемы. Прав ему на сервер при этом давать необязательно. А вообще можно по-разному реализовать. Это дело вкуса. |
|
|
За это сообщение автора поблагодарили: mazzy (2), -DocSerzh- (1). |
![]() |
#2 |
Участник
|
Цитата:
отдельный connectoin - да. см. SysExceptionLog. а лог-таблицы беспокоят давно ) http://axapta.mazzy.ru/lib/dbgrowthsolution/ Цитата:
Но уже есть SysExceptionLog. Правда этот класс и эта таблица изначально создавались для AIF. Именно. Поэтому и спрашиваю не "как", а "как правильно" )))) Цитата:
насчет стандартного инфолога в пакетных заданиях. уже после того, как написал, подумал, что не упомянул и не закрыл эту возможность в вопросе. наверное стоит рассказать о задаче. собственно хочу опубликовать свою поделку для измерения кэшей. это код, который "цепляется" к SysGlobalCache и "живет" на самых ранних этапах инициализации аксапты. запись в виндовые счетчики производительности требует, чтобы пользователь, из-под которого выполняется код, принадлежал группе. кроме того, нужно, чтобы сами счетчики существовали до того, как их начнут использовать. код умеет проверять условия и если условия не выполняется, то ничего не происходит. собственно из этого появляется по крайней мере два сообщения администраторам системы - не хватает счетчиков и не хватает прав для изменения счетчиков. ключевой момент - на этапе, когда нужно вывести сообщение, еще нет инфолога. и это не пакетное задание. собственно отсюда и вопрос: а куда демон должен выводить сообщение, чтобы администратору было удобно увидеть это сообщение. понятно, что собственный код, созданный на проекте, может делать что угодно. а как должен поступать публичный код? напрашивается Windows Event Log - но в виндовый eventLog живет только на компьютере, где создается этот eventLog. а клиент и сервер - разные машины. на которые у администратора аксапты права могут отсутствовать. SysExceptionLog - живет в таблицах аксапты. Но что-то я сомневаюсь, что администратор догадается туда посмотреть. в кастомные таблицы - точно не догадается. |
|
![]() |
#3 |
Участник
|
У нас инфолог при ошибке пакетного задания отсылается е-мейлом на адрес системы хелпдеска и поэтому автоматически фиксируется там как заявка. Это позволяет дальше с ней разбираться так же, как с любыми другими заявками от живых пользователей.
|
|
![]() |
#4 |
Участник
|
да-да.
я поздно вспомнил, что в пакетном задании инфолог сохраняется в базу. поэтому в пакетном задании вопрос не актуален. исправлю название ветки. |
|
|
|