# Подключение NLog

> ℹ️  Рекомендуется включать полное логирование только по необходимости, а после работы выключать его и очищать папку logs

Для включения полного логирования в файле [NLog.config](https://help.1forma.ru/maintenance_guide/maintenance/app-files/nlog/nlog.md) (как для MS SQL, так и для PG) необходимо раскомментировать строку:

```xml
<logger name="*" minlevel="Trace" writeTo="bufferedFile" />
```

Если требуется логирование SQL-запросов, раскомментируйте строку:

```xml
<logger name="TCDataAccess.Kernel.Domain.ValhallaDataConnection" minlevel="Trace" writeTo="bufferedFile" />
```

Запись будет осуществляться в папку logs.

Максимальное количество — 10 файлов по 10 Мб. Для увеличения этих значений внесите изменение в секцию:

```xml
<target name="bufferedFile" xsi:type="BufferingWrapper" flushTimeout="3000" slidingTimeout="false">
  <target xsi:type="File"
          fileName="${basedir}/logs/${shortdate}/trace.log"
          archiveAboveSize="10000000"
          concurrentWrites="false"
          maxArchiveFiles="10"
          archiveNumbering="Sequence"
          layout="${fileLayout}">
  </target>
</target>
```

В параметре archiveAboveSize указывается размер файла в байтах, в параметре maxArchiveFiles — количество файлов.

## Для площадки на MS SQL

Для площадки на MS SQL используется секция:

```xml
<logger name="*" minlevel="Error" writeTo="bufferedDatabase">
  <filters defaultAction="Neutral">
    <when condition="'${gdc:item=useSqlServer}'=='False'" action="Ignore" />
    <when condition="disable-dblog()" action="Ignore" />
    <when condition="is-smart-cancel('${exception:format=Type}')" action="IgnoreFinal" />
    <when condition="is-logic-cancel('${exception:format=Type}')" action="IgnoreFinal" />
  </filters>
</logger>
```

## Для площадки на PG

Для площадки на PG используется секция:

```xml
<logger name="*" minlevel="Error" writeTo="bufferedDatabasePG">
  <filters defaultAction="Neutral">
    <when condition="'${gdc:item=usePostgre}'=='False'" action="Ignore" />
    <when condition="disable-dblog()" action="Ignore" />
    <when condition="is-smart-cancel('${exception:format=Type}')" action="IgnoreFinal" />
    <when condition="is-logic-cancel('${exception:format=Type}')" action="IgnoreFinal" />
  </filters>
</logger>
```

## Внутренний лог

В случае возникновения проблем и ошибок в ходе работы с NLog сообщения логируются в файле nlog-internal.log — собственном журнале Nlog, рекомендуется обращаться к нему в первую очередь.

Путь к нему должен быть прописан в атрибуте internalLogFile внутри секции <nlog />

`internalLogFile="c:\temp\nlog-internal.log"`
