Текстовые файлы отлично подходят для серверного приложения (вы сказали Windows 2003). У вас должен быть отдельный файл журнала для каждого серверного приложения, расположение которого на самом деле является соглашением с администраторами. Например. для приложений ASP.NET я часто видел их размещенными на отдельном диске от приложения в структуре папок, которая имитирует структуру виртуальных каталогов.
Для клиентских приложений одним из недостатков текстовых файлов является то, что пользователь может запускать несколько копий вашего приложения (если вы не предприняли особых шагов для предотвращения этого). Таким образом, у вас есть проблема конкуренции, если несколько экземпляров пытаются записать в один и тот же файл журнала. По этой причине я бы всегда предпочел журнал событий Windows для клиентских приложений. Одним из предостережений является то, что вам нужно быть администратором для создания журнала событий - это можно сделать, например, пакетом установки.
Если вы используете файл, я бы предложил использовать папку Environment.SpecialFolder. Local ApplicationData, а не SpecialFolder.ApplicationData, как предлагали другие. LocalApplicationData находится на локальном диске: вы не хотите, чтобы проблемы с сетью мешали вам регистрироваться, когда у пользователя есть перемещаемый профиль. Для приложения WinForms используйте Application.LocalUserAppDataPath.
В любом случае, я бы использовал файл конфигурации, чтобы решить, куда вести журнал, чтобы вы могли легко его изменить. Например. Если вы используете Log4Net или аналогичную инфраструктуру, вы можете легко настроить, регистрировать ли запись в текстовый файл, журнал событий, в оба или в другом месте (например, в базе данных), не меняя приложение.