AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.06.2017, 10:10   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,987 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от mazzy Посмотреть сообщение
такая служба скорее всего будет реализована пакетным заданием
ну или вручную при помощи tread на сервере.

главное, что infolog этой службы будет недоступен ни пользователю, ни администратору.
Недавно решал такую проблему.
Сделал простенькую модификацию класcа info. В пакетном режиме он пишет в специальную табличку лога все сообщения выводимые в инфолог, тип исключения, стек вызовов, SessionId, AOSid.
Запись идет через отдельное соединение к базе.

Т.е. независимо от успешности завершения пакетного задания, а также независимо от наличия в нем транзакций, сторонний наблюдатель сразу видит, что пишется в инфолог и понимает что происходит с процессом прямо сейчас. Эта табличка выведена на отдельную закладку в форме Batch, в которой в гриде выведены сообщения привязанные к конкретному заданию. Грид раскрашен в соответствие с типом сообщения.
Табличка лога партицирована по дате времени создания и специальный пакетник режет старые партиции (оставляем последние 2 недели для разбора полетов)

По-моему очень удобно.
Еще хотел туда же подключить выхлоп SysoperationProgress, так как не все пакеты активно пишут в инфолог, но на длительных операциях практически все показывают прогресс бар. но руки пока не дошли.

Используем этот инструмент для разбора полетов постфактум а также для выяснения, а чего это делает пакетник, который по всем признакам подвис.

Подход с табличкой логом удобен тем что позволяет сотруднику тех поддержки ответственному за пакеты контролировать процесс привычными методами. Быстро искать и анализировать проблемы. Прав ему на сервер при этом давать необязательно.

А вообще можно по-разному реализовать. Это дело вкуса.
За это сообщение автора поблагодарили: mazzy (2), -DocSerzh- (1).
Старый 27.06.2017, 12:03   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от macklakov Посмотреть сообщение
Все равно, главное чтобы вся эти логи и интеграционная шняга в отдельной базе лежали. От них база пухнет. При этом, с оперативной точки зрения, они не нужны. И скорость здесь обычно не важна. Но очень важны для расследований.
ну... отдельная база все-таки перебор.
отдельный connectoin - да. см. SysExceptionLog.

а лог-таблицы беспокоят давно ) http://axapta.mazzy.ru/lib/dbgrowthsolution/

Цитата:
Сообщение от Logger Посмотреть сообщение
В пакетном режиме он пишет в специальную табличку лога все сообщения выводимые в инфолог, тип исключения, стек вызовов, SessionId, AOSid.
ну... делать кастомную можно.
Но уже есть SysExceptionLog.
Правда этот класс и эта таблица изначально создавались для AIF.

Цитата:
Сообщение от Logger Посмотреть сообщение
А вообще можно по-разному реализовать. Это дело вкуса.
Именно.
Поэтому и спрашиваю не "как", а "как правильно" ))))

Цитата:
Сообщение от DSPIC Посмотреть сообщение
Но в целом, никто не мешает делать все стандартно, где все логируется стандартным BatchFramework
да, согласен, про кастомную. и согласен, что AIF.

насчет стандартного инфолога в пакетных заданиях.
уже после того, как написал, подумал, что не упомянул и не закрыл эту возможность в вопросе.

наверное стоит рассказать о задаче.
собственно хочу опубликовать свою поделку для измерения кэшей.
это код, который "цепляется" к SysGlobalCache и "живет" на самых ранних этапах инициализации аксапты.

запись в виндовые счетчики производительности требует, чтобы пользователь, из-под которого выполняется код, принадлежал группе. кроме того, нужно, чтобы сами счетчики существовали до того, как их начнут использовать. код умеет проверять условия и если условия не выполняется, то ничего не происходит.

собственно из этого появляется по крайней мере два сообщения администраторам системы - не хватает счетчиков и не хватает прав для изменения счетчиков.

ключевой момент - на этапе, когда нужно вывести сообщение, еще нет инфолога. и это не пакетное задание.

собственно отсюда и вопрос: а куда демон должен выводить сообщение, чтобы администратору было удобно увидеть это сообщение. понятно, что собственный код, созданный на проекте, может делать что угодно. а как должен поступать публичный код?

напрашивается Windows Event Log - но в виндовый eventLog живет только на компьютере, где создается этот eventLog. а клиент и сервер - разные машины. на которые у администратора аксапты права могут отсутствовать.

SysExceptionLog - живет в таблицах аксапты. Но что-то я сомневаюсь, что администратор догадается туда посмотреть. в кастомные таблицы - точно не догадается.

Цитата:
Сообщение от mazzy Посмотреть сообщение
как на ваш взгляд правильно информировать пользователя (администратора) об ошибках такой службы? и почему вы считаете ваш способ правильным?
__________________
полезное на axForum, github, vk, coub.
Старый 27.06.2017, 12:04   #3  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
У нас инфолог при ошибке пакетного задания отсылается е-мейлом на адрес системы хелпдеска и поэтому автоматически фиксируется там как заявка. Это позволяет дальше с ней разбираться так же, как с любыми другими заявками от живых пользователей.
Старый 27.06.2017, 12:09   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Zabr Посмотреть сообщение
У нас инфолог при ошибке пакетного задания
да-да.
я поздно вспомнил, что в пакетном задании инфолог сохраняется в базу.
поэтому в пакетном задании вопрос не актуален.

исправлю название ветки.
__________________
полезное на axForum, github, vk, coub.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Поговорим о SysGlobalObjectCacheItemWrapper? Кто использовал? Как правильно? Что можно сделать? mazzy DAX: Программирование 1 16.06.2017 13:07
Как правильно хранить статичный набор начальных данных в классах? mazzy DAX: Программирование 58 14.04.2011 12:10
Запуск пакетной обработки (batch) в последний день месяца petr DAX: Функционал 10 03.12.2010 00:11
Снять задание сервера пакетной обработки fomenka DAX: Программирование 9 24.04.2007 14:33
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:31.