【问题标题】:NLog fails for certain project configurations - throws for 127.0.0.2 but fails silently for 127.0.0.1某些项目配置的 NLog 失败 - 抛出 127.0.0.2 但静默失败 127.0.0.1
【发布时间】:2011-10-11 10:20:32
【问题描述】:

我正在使用 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)

【问题讨论】:

  • 端口9999打开127.0.0.1127.0.0.2?
  • @Leito:Sentinel 正在侦听端口 9999,并且在工作配置中它确实像这样工作。

标签: c# .net logging nlog


【解决方案1】:

找到了。所有配置都引用同一个 DLL,但其中一些使用 GAC 的一个,而不是暗示的那个。手动复制 DLL 和重写项目引用解决了这个问题。

为什么 VS 不对丢失的 DLL 给出最高级别的警告...

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 2017-01-10
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多