Ответ 1
Вы абсолютно уверены, что используете Trace? Если нет, я бы использовал более полнофункциональную систему ведения журнала, такую как Log4Net.
Однако, если вы действительно хотите использовать Trace
, вы можете перенастроить TraceListener
, используемый с файлом app.config
. TraceListener
Документы MSDN дают пример примерно так:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="fileLogger"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="LogFile.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
TextWriterTraceListener
будет записывать журналы в данный файл. (Есть и другие варианты.)
В качестве альтернативы вы можете сделать это программно:
Trace.Listeners.Add(new TextWriterTraceListener("foo.log"));
Обратите внимание, что вам может потребоваться явно очистить трассировки до выхода вашего приложения, либо с помощью:
Trace.Flush();
или более сложный:
foreach (TraceListener listener in Trace.Listeners)
{
listener.Flush();
}
(я упоминаю только об этом, потому что мне приходилось проверять это!)
РЕДАКТИРОВАТЬ: Как отмечено в комментариях, если вы счастливы, что слушатель будет очищаться после каждой записи (что позволяет избежать флеша в конце, но может нанести вред производительности), вы можете установить Trace.AutoFlush
в true (в том числе в XML - см. атрибут autoflush
).