2015-07-30 2 views
0

У меня есть уникальная проблема с NLog. У меня есть сторонняя сборка, которую мы используем в нашем проекте. Они использовали NLog в своем проекте и ссылались на конфигурацию NLog в свою конфигурацию, к которой у меня нет доступа. У меня возникла проблема даже с добавлением NLog в проект, так как обе версии dll были разными. Мне пришлось загрузить исходный код NLog и изменить имя сборки, так как псевдоним не работал для меня (ИЛИ я не знал, как его использовать.) После указания моего собственного имени сборки NLog начал wotrking, но .. Он начал ведение журнальной информации о сторонних журналах. Похоже, они недостаточно осторожны при определении регистратора, и они просто определили (*). Теперь мой вопрос: как я могу избежать того, чтобы их материалы вошли в мой файл? Я также попытался установить его в final = true. Вот как выглядит мой очень простой файл конфигурации.Игнорирование конфигурации NLog, упомянутой в другой сборке

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

    <!-- 
    See https://github.com/nlog/nlog/wiki/Configuration-file 
    for information on customizing logging rules and outputs. 
    --> 
    <targets> 
    <!-- add your targets here --> 

    <!-- 
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log" 
      layout="${longdate} ${uppercase:${level}} ${message}" /> 
    --> 

    <target name="errorLog" xsi:type="File" 
      fileName="${basedir}/logs/error/${shortdate}.log" 
      layout="${longdate} ${uppercase:${level}} ${message}${onexception:${newline}EXCEPTION\: ${exception:format=ToString}}" 

    /> 
    <target name="generalLog" xsi:type="File" 
      fileName="C:/logs/${date:format=yyyy-MM-dd}.log" 
      layout="${longdate} ${uppercase:${level}} ${message}"/> 

    </targets> 


    <rules> 
    <!-- add your logging rules here --> 
    <logger name="Errors" writeTo="errorLog" minlevel="Warn"/> 
    <logger name="EBusiness.Model.*" writeTo="generalLog" levels="Trace,Debug,Info" final="true"/> 

    <!-- 
    <logger name="*" minlevel="Trace" writeTo="f" /> 
    --> 
    </rules> 
</nlog> 

ответ

0

Если они пишут в корневой регистратор, вы должны настроить корневой регистратор не войти в любом месте вы заботитесь (возможно, направьте его на консоли регистратора) и приложение может войти к определенному регистратору, который делает написать к вашим файлам.

Уродливый, но должен работать.

Например: Добавить эту цель:

<target name="console" xsi:type="Console" />

И Изменение * правило быть:

<logger name="*" minlevel="Fatal " writeTo="console" />

Затем добавить собственное правило журналирования, что-то вроде:

<logger name="MyNameSpace.*" minlevel="Trace" writeTo="logfile" final="true" />

Предполагая, что у вас установлен целевой объект logfile, указывающий на ваш файл.

+0

Или вы можете переключиться на Log4net;) –

+0

Не могли бы вы предоставить мне несколько образцов? Я пробовал следующее .. но их материал все еще записывается на моем .. Если вы видите регистраторы, я создал точку корневого регистратора для какого-либо другого файла, а затем очень специфического регистратора для моего класса. Он по-прежнему записывает свои материалы в мои файлы и их файл не создается –

+0

В этом случае, я думаю, я пропустил что-то важное о том, как они используют конфигурацию - извините, я не могу больше помочь. –

Смежные вопросы