log4net перестает работать, регистрируя первого пользователя после нового выпуска

Моя проблема в том, что в среде разработки и тестирования код работает нормально, но при выпуске в производство он работает не так хорошо.
После выпуска он будет регистрировать первый запрос пользователей, который составляет около 9 различных записей журнала, когда на уровне INFO. После начальных 9 больше ничего не регистрируется, пока сервер не будет перезагружен. У меня сейчас только этот голый код в производстве, и он все еще показывает то же поведение.
Любые предложения о том, что может быть причиной этого?

Конфигурация:

<log4net>
<root>
  <level value="INFO" />
  <appender-ref ref="AdoNetAppender" />
  <appender-ref ref="EventLogAppender" />
</root>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
  <bufferSize value="1" />
  <reconnectonerror value="true" />
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <connectionString value="Data Source=SQLHOTELL-FT,10433;Initial Catalog=BEKS;Integrated Security=True" />
  <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[UserId]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @userid)" />
  <filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="INFO" />
    <levelMax value="FATAL" />
  </filter>
  <parameter>
    <parameterName value="@log_date"/> <dbType value="DateTime"/> <layout type="log4net.Layout.RawTimeStampLayout"/>
  </parameter>     
  <parameter>      
    <parameterName value="@thread"/> <dbType value="String"/> <size value="255"/> <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%thread"/>
    </layout>
  </parameter>     
  <parameter>       
    <parameterName value="@log_level"/> <dbType value="String"/> <size value="50"/> <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%level"/>
    </layout>
  </parameter>     
  <parameter>        
    <parameterName value="@logger"/> <dbType value="String"/> <size value="255"/> <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%logger"/>
    </layout>
 </parameter>      
 <parameter>      
    <parameterName value="@message"/> <dbType value="String"/> <size value="4000"/> <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%message"/>
    </layout>
  </parameter>      
  <parameter>        
    <parameterName value="@exception"/> <dbType value="String"/> <size value="2000"/> <layout type="log4net.Layout.ExceptionLayout"/>
  </parameter>
  <parameter>
</appender>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
  <applicationName value="BeksWebInterface" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
  <filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="FATAL" />
    <levelMax value="FATAL" />
  </filter>
</appender>    
</log4net>

Код:

public static class Log
{
    private static ILog log;

    public static void CreateLogEntry(string message)
    {
        try
        {
            log = LogManager.GetLogger(typeof(Log));

            log4net.Config.XmlConfigurator.Configure();

            log.Info(message);

        }
        catch
        {
        }
    }
}

1 ответ

Почему вы сначала получаете регистратор, а затем настраиваете log4net? Обычно это наоборот. Например

// Configure log4net
var info = new FileInfo("myapp.log4net");
log4net.Config.XmlConfigurator.Configure(info);

// get the logger
var logger = LogManager.GetLogger(this.GetType());
Другие вопросы по тегам