Dv
Например:
Я начинаю какой-то процес, обьявляю там логгер скоуп какой-то (ну например как LifetimeScope in autofac), далее я себе логирую логирую, допустим в Info(), и если все прошло окей до момента, пока этот скоуп жив, я ничего не выкидываю в лог. Но если во время процессинга случился ексепшн, или что-то важное, то я логирую всю очередь сообщений логгинга.
Я как то так это вижу, может кто то уже с этим стыкался и имеет подобный опыт и подскажет инструмент.