# Логирование При необходимости логирования в базу данных, необходимо обеспечить: - независимость от основной ветки изменения данных - высокую отказоустойчивость - низкую нагрузку на сервер/базу данных Для реализации такого логирования существует специальный инструмент – логирующая транзакция. Данный инструмент позволяющий выделить запись логов в отдельную сессию. Для уменьшения количества обращений к базе производите сброс данных из логирующей транзакции в базу не чаще, чем раз в 1000 update/insert. Пример: ```scala 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`