Вы не говорите, как размещается ваш веб-сервис, поэтому я предполагаю, что он находится в IIS. Я не думаю, что файл должен быть доступен для нескольких процессов, если ваша служба не работает в нескольких пулах приложений. Тем не менее, я думаю, вы могли бы получить эту ошибку, когда несколько потоков в одном процессе пытаются писать.
Думаю, я бы выбрал решение, которое вы предлагаете себе, Прадип, создать один объект, который выполняет всю запись в файл журнала. Внутри этого объекта у меня будет Очередь, в которую записываются все данные для регистрации. Я бы хотел отдельный поток, читающий из этой очереди и записывающий в файл журнала. В хостинговой среде с пулами потоков, такой как IIS, кажется, не слишком приятно создавать другой поток, но он только один ... Имейте в виду, что очередь в памяти не переживет перезагрузки IIS; Вы можете потерять некоторые записи, которые «в полете», когда процесс IIS останавливается.
Другие альтернативы, безусловно, включают использование отдельного процесса (например, службы) для записи в файл, но это требует дополнительных затрат на развертывание и затрат на IPC. Если это не сработает, поезжайте с синглтоном.