Nlog с библиотекой классов - PullRequest
       21

Nlog с библиотекой классов

0 голосов
/ 09 ноября 2018

У меня есть библиотека классов и файл конфигурации в отдельном месте, я хочу использовать его поэтому я делаю следующее

LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration(configurationFile , true);
LogManager.ReconfigExistingLoggers();

Конфигурация NLog является частью удаленного приложения. Файл конфигурации выглядит как

<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">
        <targets>
            <!-- 
              Log in a separate thread, possibly queueing up to
              5000 messages. When the queue overflows, discard any
              extra messages
            -->
            <target name="file" xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard" 
                layout="${machinename} - ${level} - ${longdate} - ${callsite} - ${threadid} - ${message} ${exception:format=tostring}">
                <target xsi:type="File" fileName="C:\logs/${level}.txt" />
            </target>
        </targets>
        <rules>
            <logger name="*" minlevel="Debug" writeTo="file" />
        </rules>
    </nlog>
</configuration>

объект конфигурации LogManager.Configuration всегда имеет значения по умолчанию, есть идеи, как это исправить.

1 Ответ

0 голосов
/ 10 ноября 2018

При создании первого объекта NLog Logger NLog попытается автоматически загрузить NLog.config (или app.config). Поиск в нескольких местах:

https://github.com/nlog/NLog/wiki/Configuration-file#configuration-file-locations

Вы должны попытаться активировать внутренний регистратор NLog и понять, почему он не находит «remote app.config» без ручной загрузки (может быть включено кодом):

https://github.com/NLog/NLog/wiki/Internal-Logging

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

https://github.com/NLog/NLog/wiki/Configure-component-logging

Если вы хотите загрузить NLog.config из нестандартного пути (не app.config). Тогда вы также можете сделать это:

https://github.com/NLog/NLog/wiki/Explicit-NLog-configuration-loading

...