Логирование
Логирование#
При необходимости логирования в базу данных, необходимо обеспечить:
независимость от основной ветки изменения данных
высокую отказоустойчивость
низкую нагрузку на сервер/базу данных
Для реализации такого логирования существует специальный инструмент – логирующая транзакция.
Данный инструмент позволяющий выделить запись логов в отдельную сессию. Для уменьшения количества обращений к базе производите сброс данных из логирующей транзакции в базу не чаще, чем раз в 1000 update/insert.
Пример:
val logTransaction = new LogTransaction() {
override protected def run(): Unit = {
Rpl_IntImportLogApi().setsError(Rpl_IntImportLogApi().load(idp),value)
commitByInterval()
}
}
logTransaction.execute()
Более подробно примеры использования можно посмотреть в модуле
интеграции Rpl ru.bitec.app.rpl.channel.intg.in.Rpl_IntImportLogApi
–
методы с постфиксом LT
.
При выполнении .execute()
сервер производит попытку найти логирующую
сессию, если она уже была инициирована. Если не была – выделяется новая.
Внутри блока LogTransaction()
implicit session
является логирующая
сессия и все действия производимые с использованием logSession
относятся
к ней.
В LogSession
происходит commit
:
При освобождении
LogSession
LogSession
освобождается наendWork
.
Смотрите также методы основной сессии:
beginWork
endWork