почему AdoNetAppender не записывает сообщения журнала в БД? - PullRequest
1 голос
/ 06 июля 2010

Я использую AdoNetAppender, и вот часть моего файла конфигурации:

 <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
  <bufferSize value="1" /> 
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <connectionString value="[we will set this automatically at runtime]" />
  <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
   <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>
</appender>

, и это мой код для регистрации сообщений:

 private static readonly ILog fifthlog = LogManager.GetLogger("ADONetAppender"); fifthlog.Info("this is db log");

Я также используюдругие приложения, такие как RollingFileAppender, и они работают отлично, но этот не работает, потому что когда я делаю этот запрос select * from Log на моем сервере sql, таблица пуста.Мое соединение с БД успешно, потому что я проверил соединение.Что не так?

Ответы [ 2 ]

1 голос
/ 06 июля 2010

Для того, чтобы действительно узнать, что происходит, вы должны включить внутреннюю отладку:

http://log4net.sourceforge.net/release/1.2.0.30316/doc/manual/faq.html#internalDebug

Несколько вещей, которые приходят мне на ум:

  • Проблема с правами доступа к базе данных (как уже указывалось devstuff )
  • Если вы используете встроенную защиту: возможно, вы подключаетесь к вызывающей стороне, а не к хост-процессу (это происходит, например, если вы используете среду sharepoint).
  • Проблема преобразования с одним из ваших параметров (хотя это кажется маловероятным)
0 голосов
/ 06 июля 2010

Есть ли у учетной записи разрешения на вставку в таблицу Log?

А какой уровень выходного сигнала настроен для этого приложения?

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