Традиционно keepConnection был включен из-за точной причины, которую вы указали, было бы ужасно быстро открывать / закрывать большое количество соединений. Если отключено, NLog откроет соединение, запишет отдельную запись в журнал и закроет каждое соединение.
Если вы хотите, чтобы соединения закрывались, вы всегда можете использовать оболочку для повышения производительности журналирования, записывая журналы партиями
Проверить асинхронный буфер: https://github.com/nlog/nlog/wiki/AsyncWrapper-target
Размер партии по умолчанию равен 100, что, вероятно, вам подходит. В этом случае было бы хорошо отключить keepConnection. При этом NLog помещает в очередь 100 сообщений журнала, а затем открывает соединение, записывает их все и затем закрывает соединение.
Кроме того, 5000 в день - это очень мало для ведения журнала, что составляет 4 журнала в минуту, что, конечно, не большая нагрузка. Похоже, что-то еще не так.
Первое, что приходит на ум, это то, что вы используете SQL Server, который обычно требует транзакций. По умолчанию он отключен в NLog, поэтому обязательно включите транзакции в конфигурации журнала.
useTransactions=true
https://github.com/nlog/nlog/wiki/Database-target