nlog: вопросы по записи логов в БД
От: BlackHorse Россия  
Дата: 29.03.18 08:08
Оценка:
Добрый день!

Разбираясь с nlog, пробую писать логи в БД. Возникли вопросы:
1. На текущий момент запись в БД не идёт. Подскажите, где у nlog можно увидеть причину: почему он не пишет в БД? Конфиг прикладываю ниже. Это минимальный неработающий вариант. Права вставки в таблицу есть, в сессиях я вижу подключения с этим запросом, но логов в таблице нет. Сам nlog не дает никаких подсказок, ошибок куда смотреть- чисто "черный ящик".
2. Если включена неработающая запись в БД, то перестают записываться логи в файл. Комментирую логи в БД- запись в файл работает. Мне совсем не нравится, что процесс записи в файл зависит от процесса записи в БД. Вопрос: в правильно настроенном nlog'e есть ли такая беда- как отключается БД, так перестают записываться логи в файл?

Вот мой конфиг:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
  </configSections>
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogLevel="Debug">
    <variable name="logDir" value="${basedir}/log"/>
    <variable name="fileName" value="${gdc:item=FileName}"/>
    <variable name="appName" value="${gdc:item=AppName} ver.${gdc:item=AppNum}."/>
    <variable name="detailedLayout" value="${baseLine} ${message} ${exception:format=ToString}"/>
    <targets>
      <target name="logfile" xsi:type="File" fileName="..." layout="${detailedLayout}" archiveFileName="...">
      </target>      
      <target xsi:type="Database" name="test" keepConnection="true" dbProvider="Npgsql.NpgsqlConnection, Npgsql" connectionString="User ID=<...>;Password=<...>;Host=localhost;Port=5432;Database=<...>;Pooling=true">
        <commandText>INSERT INTO servicelog (dt, message) values (@dt, @message)</commandText>
        <parameter layout="${date}" name="@dt" />
        <parameter layout="${message}" name="@message" />
      </target>
    </targets>
    <rules>
      <logger name="*" minlevel="Trace" writeTo="logfile"/>
      <logger name="*" minlevel="Trace" writeTo="test"/>
    </rules>
  </nlog>
</configuration>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.