Да, использование опции Suppress
будет означать, что «сделать реальное ведение журнала» происходит вне контекста транзакции.
Но это зависит немного от того, что вы регистрируете и почему;Еще один подход заключается в том, чтобы перебросить все ваши данные регистрации в очередь производителя / потребителя (то есть потокобезопасную очередь, обслуживаемую отдельным потоком).Поскольку TransactionScope
привязан к потоку, это удаляет ассоциацию транзакций, но также имеет преимущество удаления ведения журнала в качестве фактора (задержки и т. Д.) В самой операции и позволяет группировать ведение журнала.операций, если вы выберете.
Очевидно, что это применимо только к информационному протоколированию, поскольку существует вероятность (в крайних случаях), что небольшое количество данных из очереди будет потеряно во время повторных циклови т. д.
Подход производителя / потребителя особенно заманчив, если вы регистрируетесь в файл, поскольку он позволяет синхронизировать доступ к файлу (что, очевидно, необходимо), без необходимостизаблокировать сам IO (вы только синхронизируете доступ к очереди).