Как заставить NLog писать в базу данных

Я пытаюсь заставить NLog вести журнал в моей таблице журнала базы данных, но безрезультатно. Я уверен, что моя строка подключения верна, потому что она используется в другом месте моего web.config. Запись в файл работает нормально, поэтому я знаю, что это не просто NLog, но, должно быть, я делаю что-то неправильно. Ниже приведена моя конфигурация NLog:

<!-- NLOG CONFIGURATION -->
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="file" xsi:type="File" fileName="${basedir}/logs/Log ${shortdate}.txt" layout="${longdate} ${callsite} ${level}: ${message} ${exception:format=Message,StackTrace} ${stacktrace}" />
      <target type="Database" name="database" connectionstring="MyConnectionString">
        <commandText>
          insert into MyLog ([CreateDate], [Origin], [LogLevel], [Message], [Exception], [StackTrace]) values (@createDate, @origin, @logLevel, @message, @exception, @stackTrace);
        </commandText>
        <parameter name="@createDate" layout="${longdate}"/>
        <parameter name="@origin" layout="${callsite}"/>
        <parameter name="@logLevel" layout="${level}"/>
        <parameter name="@message" layout="${message}"/>
        <parameter name="@exception" layout="${exception:format=Message,StackTrace}"/>
        <parameter name="@stackTrace" layout="${stacktrace}"/>
      </target>
    </targets>
    <rules>
      <logger name="*" writeTo="file"/>
      <logger name="*" appendTo="database"/>
      <!--<logger name="*" writeTo="mail" minlevel="Error"/>-->
    </rules>
  </nlog>

person Ciaran O'Neill    schedule 17.06.2009    source источник


Ответы (2)


Попробуйте поместить в тег nlog следующее:

<nlog throwExceptions="true" internalLogFile="c:\nlog.txt" internalLogLevel="Debug" />

Это может помочь определить, в чем проблема

person slolife    schedule 17.06.2009
comment
${longdate} была строкой, которую я пытался вставить в поле даты и времени. Изменение его на $ {date} помогло. - person Ciaran O'Neill; 17.06.2009
comment
Обратите внимание, что NLog 4.6+ поддерживает типы Db в целевой базе данных. Таким образом, вы можете установить для ${date} , dbType=DbType.Date, см. nlog-project.org/2019/03/20/nlog-4-6-is-live.html - person Julian; 23.06.2019

NLog позволяет регистрировать внутренности самого фреймворка.

Включите «уровень отладки для вашего внутреннего ведения журнала" для NLog и посмотрите, что происходит не так. .

person Sunny Milenov    schedule 17.06.2009
comment
мертвая ссылка, но я нашел это полезным github.com/NLog/NLog/wiki/Internal-Logging - person Fuzzybear; 25.03.2014