Они уже разработаны для этой цели, поэтому использование их в том виде, в каком они должны быть, вполне оправдано. Просто добавьте это в файл app.config:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextWriterOutput.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
С другой стороны, да, они будут влиять на производительность вашего приложения в чувствительной к производительности области. Если вас это беспокоит, лучше используйте Common.Logging , как показано ниже:
log.Trace(m=>m("value= {0}", obj.Value));
Таким образом, только если функция LogLevel.Trace включена, эта функция будет оценена. Когда отключено, будет минимальное снижение производительности.