Сбой NLog для определенных конфигураций проекта - сбрасывает для 127.0.0.2, но молча завершается для 127.0.0.1 - PullRequest
1 голос
/ 11 октября 2011

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

Я заметил, что (в нерабочей конфигурации) NLog выбрасывает, когдаведение журнала на 127.0.0.2, но без сбоев (без ошибок в журнале, но, очевидно, сообщение не отправляется) для 127.0.0.1.Поскольку оба адреса должны вести себя одинаково, я остался в тупике.Я использую Sentinel в качестве средства просмотра журналов.

Как возможно, что NLog завершается ошибкой, несмотря на тот же код и конфигурацию, и почему он ведет себя по-разному для 127.0.0.1 и .2?

Код:

internal class Program
{
    protected static Logger logger = LogManager.GetLogger ("Console.Main");

    private static void Main (string[] args)
    {
        logger.Trace ("Initializing platform");

NLog.config:

<targets>
  <target name="viewer"
          xsi:type="NLogViewer"
          address="udp://127.0.0.2:9999"/>
  <target name="file"
          xsi:type="File"
          layout="${longdate} ${logger} ${message} ${exception}"
          fileName="${basedir}/logs/logfile.txt"
          keepFileOpen="false"
          encoding="iso-8859-2" />
  <target xsi:type="ColoredConsole"
          layout="${logger} ${message} ${exception}"
          name="console"/>
</targets>
<rules>
  <logger name="*"
          minlevel="Trace"
          writeTo="viewer" />
  <logger name="*"
          minlevel="Trace"
          writeTo="file" />
  <logger name="*"
          minlevel="Info"
          writeTo="console" />
</rules>

Внутренний файл журнала для 127.0.0.2:

2011-10-11 12:05:08.4364 Error Target exception: System.Net.Sockets.SocketException (0x80004005): No such host is known
   at System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6)
   at System.Net.Dns.GetHostEntry(String hostNameOrAddress)
   at NLog.Internal.NetworkSenders.UdpNetworkSender..ctor(String url)
   at NLog.Internal.NetworkSenders.NetworkSender.Create(String url)
   at NLog.Targets.NetworkTarget.NetworkSend(String address, Byte[] bytes)
   at NLog.Targets.NetworkTarget.Write(LogEventInfo logEvent)
   at NLog.LoggerImpl.Write(Type loggerType, TargetWithFilterChain targets, LogEventInfo logEvent, LogFactory factory)

1 Ответ

1 голос
/ 11 октября 2011

Нашел это.Все конфигурации ссылались на одну и ту же DLL, но некоторые из них использовали одну из GAC вместо той, на которую намекали.Копирование библиотек вручную и переписывание ссылок на проекты исправили проблему.

Почему VS не выдает предупреждение наивысшего уровня об отсутствующих библиотеках DLL ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...