понедельник, 23 мая 2016 г.

Log4net. Включить системный debug.

Чтобы отследить, что происходит внутри log4net, добавьте следующие настройки в конфиге:

  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  ...


  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="textWriterTraceListener"
          type="System.Diagnostics.TextWriterTraceListener"
          initializeData="C:\logfiles\log4net.txt" />
      </listeners>
    </trace>
  </system.diagnostics>
  ...

Log4net. Множество лог-файлов при запуске нескольких инстансов одновременно.

Столкнулся с ситуацией, когда при одновременно запуске множества инстансов приложения в папке логов появлялось сразу несколько файлов.
Например, если имя лога с паттерном дата
log_20160505.txt
то если запустить например три  инстанса одновременно,  то получим:
log_20160505.txt
log_2016050520160505.txt
log_201605052016050520160505.txt

Чтобы этого избежать и перенаправить весь поток в желаемый один лог файл, необходимо использовать тег lockingModel:

<appender name="RollingLogFileAppender" 
type="log4net.Appender.RollingFileAppender"></appender>
<lockingmodel 
type="log4net.Appender.FileAppender MinimalLock"></lockingmodel>
<file value="c:\logfiles\log_yyyyMMdd.txt"></file>


В этом случае каждый поток будет пытаться захватить и направить вывод в один единственный лог.