Можно ли использовать System.Diagnostics.Trace в качестве формы регистрации общего достояния для .net? - PullRequest
3 голосов
/ 23 мая 2011

Мне было интересно, можно ли каким-либо образом использовать методы System.Diagnostics.Trace как форму регистрации общего достояния для моих библиотек .Net.Вместо того, чтобы включать зависимости в эти библиотеки для log4net или CommonsNet (который, по-видимому, похож на проект регистрации общего достояния для java в .Net), могу ли я использовать встроенные методы?

Я вижу, что можнодобавить слушателей к этому выводу трассировки, но будут ли потери производительности при вызове Trace.TraceError, Trace.TraceWarning или Trace.TraceInformation из кода, критичного к производительности?

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Они уже разработаны для этой цели, поэтому использование их в том виде, в каком они должны быть, вполне оправдано. Просто добавьте это в файл 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 включена, эта функция будет оценена. Когда отключено, будет минимальное снижение производительности.

0 голосов
/ 23 мая 2011

Ответ на оба ваших вопроса: «Да». Для первого вам потребуется реализовать (или использовать существующий) TraceListener .

Во-вторых, будут штрафы за производительность, в зависимости от того, является ли штраф действительно значимым, зависит от требований производительности и производительности вашего регистратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...