Модуль в этой статье: Message Monitor
Уровень журнала TRACE в SAP CPI: почему он выключается и как безопасно держать его включённым
Почему уровень журнала TRACE в SAP CPI сбрасывается примерно через 10 минут, что и сколько он хранит, чем рискован в продуктиве и как держать его включённым только во время работы.

Вы ставите iFlow уровень журнала Trace, четверть часа тестируете что-то другое, отправляете нужное сообщение — а трассировка пуста. SAP Cloud Integration (SAP CPI) тихо вернул уровень назад. Это сделано намеренно, и когда понимаешь почему, правила работы с TRACE вытекают сами собой.
В этой статье — что хранит каждый уровень журнала, почему TRACE истекает, как пользоваться им безопасно и как держать его включённым ровно столько, сколько вы работаете.
Уровни журнала и что добавляет TRACE
| Уровень журнала | Что хранится для каждого сообщения |
|---|---|
| Info | Общий статус, время и ошибку, если она была |
| Debug | Запись для каждого шага, который выполнило сообщение |
| Trace | То же, что Debug, плюс тело, headers и exchange properties перед каждым шагом |
Уровень задаётся для развёрнутого iFlow, поэтому, пока он установлен, он действует на каждое сообщение, которое обрабатывает этот iFlow.
Почему TRACE выключается сам
TRACE записывает payload, headers и свойства каждого шага в базу данных tenant. На нагруженном iFlow это много данных, и среди них могут быть персональные или конфиденциальные. Поэтому SAP ограничивает TRACE по времени: уровень TRACE действует около 10 минут, после чего iFlow возвращается на более низкий уровень, а само содержимое трассировки хранится около часа.
Tenant также можно настроить так, чтобы TRACE был запрещён вовсе. Тогда установить его не получится, кто бы ни пытался.
Как включить TRACE вручную
- В мониторе откройте Manage Integration Content и выберите развёрнутый iFlow.
- В его настройках журнала установите уровень Trace.
- Отправьте тестовые сообщения в течение следующих 10 минут и прочитайте их трассировки в течение часа.
- Во время долгой сессии ставьте Trace заново каждые 10 минут.
Как пользоваться TRACE безопасно
import com.sap.gateway.ip.core.customdev.util.Message
def Message processData(Message message) {
// Set the exchange property logPayload to "true" (for example from an
// externalized parameter) only while you investigate.
if (message.getProperty("logPayload") == "true") {
def log = messageLogFactory.getMessageLog(message)
log?.addAttachmentAsString("Payload before mapping", message.getBody(String), "text/plain")
}
return message
}- Предпочитайте тестовые данные. Трассировка продуктивного сообщения хранит данные этого клиента в tenant в течение часа.
- В продуктиве трассируйте как можно меньше времени — ровно столько, чтобы ответить на вопрос, — и соблюдайте правила согласования вашей компании.
- Не оставляйте Debug или Trace настроенным уровнем журнала iFlow: за это платит каждое сообщение.
- Не пишите пароли и токены в headers или свойства, где их покажет трассировка.
- Если payload регулярно нужен в журнале, прикрепляйте его к журналу обработки сообщения из скрипта, и только пока включён переключатель:
Держите TRACE включённым, только пока работаете
В Kitegra на панели «Сообщения» открытого iFlow есть переключатель с надписью «Trace: выкл.». Один щелчок ставит уровень журнала на TRACE. Пока переключатель включён и открыта вкладка дизайнера с этим iFlow, расширение каждые 9 минут ставит TRACE заново, прежде чем SAP его сбросит, и прекращает через 20 минут после вашей последней активности в iFlow. Выключение возвращает уровень, который был у iFlow раньше. Состояние сохраняется после перезагрузки страницы, а Alt+Shift+R переключает его с клавиатуры.
Расширение отказывает с понятным сообщением, если iFlow не развёрнут в выбранной среде выполнения, если tenant не разрешает TRACE или если в параметрах выключено «Разрешить действия, изменяющие тенант».
Чтобы прочитать, что записала трассировка, см. статью о пошаговой трассировке сообщения на схеме.
Чем помогает Kitegra
Trace — одно из четырёх действий Kitegra, которые меняют ваш tenant, и выполняется оно только по вашему щелчку. Перед запуском в продуктив проверка дизайна iFlow Inspector «Подробный уровень логирования» отмечает iFlow, у которого настроенный уровень журнала трассировал бы или отлаживал каждое сообщение; чек-лист ревью iFlow разбирает её вместе с другими проверками.
Helper, Message Monitor, iFlow Inspector и iFlow Docs по отдельности считают iFlow, на которых вы их используете: 5 на модуль без аккаунта Kitegra, 50 на тарифе Free, 100 на Starter и 300 на Pro; в Business ограничений нет. Toolbox и дополнения для рабочего пространства бесплатны. Сравните тарифы.
Попробуйте в следующем iFlow
Узнайте, что Kitegra добавляет к дизайнеру SAP Integration Suite, или посмотрите его рядом с другими расширениями Kitegra для Chrome.
Частые вопросы
Почему TRACE в SAP CPI выключается сам?
TRACE сохраняет payload каждого шага в tenant. Чтобы ограничить объём данных, SAP держит уровень TRACE около 10 минут, а содержимое трассировки — около часа.
Сколько хранятся данные трассировки?
Около часа. После этого журнал сообщения остаётся, но трассированные тело, headers и свойства исчезают.
Безопасно ли использовать TRACE в продуктиве?
Он сохраняет реальные payload в tenant, поэтому используйте его как можно меньше времени — столько, чтобы ответить на вопрос, — по возможности на тестовых данных и по правилам своей компании.
Чем Debug отличается от Trace?
Debug создаёт запись для каждого шага. Trace добавляет тело, headers и exchange properties перед каждым шагом.
Почему на моём tenant не удаётся установить TRACE?
Возможно, tenant не разрешает TRACE, iFlow не развёрнут в этой среде выполнения или у вашего пользователя нет нужной роли. В расширении действия, меняющие tenant, также могут быть выключены в параметрах.
Держит ли расширение TRACE включённым, когда я закончил работу?
Нет. Оно продлевает TRACE, только пока переключатель включён и вы работаете в iFlow, и прекращает через 20 минут после вашей последней активности.