Отладочные сообщения

Отладочные сообщения скриптов выводятся в лог приложения с помощью переменной 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('...')