Отладочные сообщения
Отладочные сообщения скриптов выводятся в лог приложения с помощью переменной logger.
logger.info('Информационное сообщение')
Сообщения выводятся в лог с указанным префиксом (INFO, ERROR и т.д.).
(18 окт 2019 15:28:18,202) [ExecScriptAction naumen #71184] INFO script.Script - Информационное сообщение
В готовом скрипте отладочные сообщения убираются или для них используется уровень логирования DEBUG (если нет других требований).
В отладочных сообщения можно выводить только строки, например, logger.info(obj?.title).
Категорически нельзя выводить объекты и контекстные переменные целиком, например, нельзя использовать конструкции: logger.info(obj), logger.info("form = ${form}")
Если в скрипте вычисления значения при редактировании, по умолчанию, фильтрации вывести в лог значение переменной, например form, то выводятся значения всех атрибутов объекта, для которого открыли форму. А если у объекта заполнены ссылочные атрибуты, то возвращаются все атрибуты объектов, которые указаны в атрибутах текущего объекта, а у этих других объектов тоже могут быть заполнены ссылочные атрибуты, и так далее. Эта ситуация может привести к нехватке памяти и ошибкам приложения.
Уровень ERROR
Уровень ERROR используется для вывода сообщений об ошибке.
logger.error('Сообщение об ошибке')
Пример 1. Использование в конструкциях try-catch:
try { byte[] data = utils.readFileContent(file) } catch(e) { logger.error("Ошибка при чтении содержимого файла из файлового хранилища") }
Пример 2. Назначение ответственного: назначает ответственных команду и сотрудника для указанного объекта:
errors = utils.setResponsible(subject, team, employee); if (!errors.isEmpty()) { logger.error("Ошибка при назначении ответственного: " + errors); }
Уровень WARN
Уровень WARN используется для вывода предупреждений о потенциально опасных ситуациях.
logger.warn('Предупреждение')
Уровень INFO
Уровень INFO используется для вывода информационного сообщения.
logger.info('Информационное сообщение')
Пример.
logger.info("Тип объекта: ${subject.metaClass}")
Уровень DEBUG
Уровень DEBUG используется для вывода важных сообщений при отладке.
logger.debug('...')
Пример. Вывести название объекта контекстной переменной subject.
logger.debug("${subject.title}")
В готовом скрипте отладочные сообщения либо убираем, либо используем нижайший уровень debug, чтобы не засорялся журнал сообщений.
Уровень TRACE
Уровень TRACE используется для вывода мелких сообщений при отладке скрипта.
logger.trace('...')